c++中返回NaN的函数

Function returning NaN in C++

本文关键字:函数 NaN 返回 c++      更新时间:2023-10-16

我正在创建一个c++软件循环一个函数(双)无限期。在第一次循环之后,第二次运行时,它返回'nan'。我哪里做错了。

int main()
{
   double Balance = 100;
   for (int i = 0; i < 5; i++) {
      nyaradzo(Balance, i);
   }
}
double nyaradzo(double bal, int pass)
{
   int x = bal;
   double Amount;
   string policy_number;
   double confirmation;
   cout<<"WELCOME TO NYARADZO ONLINE POLICY PAYMENT"<<endl;
   cout<<"ENTER YOUR POLICY NUMBER"<<endl;
   cin>>policy_number;
   cout<<"ENTER AMOUNT YOU WISH TO PAY FOR YOU POLICY"<<endl;
   cin>>Amount;
   cout<<"YOUR POLICY NUMBER IS: "<<policy_number<<endl;
   cout<<"YOU HAVE CHOSEN TO PAY $"<<Amount<<" FOR YOUR FUNERAL POLICY. n Is this information correct?"<<endl;
   cout<<"1 TO CONFIRM"<<endl;
   cout<<"2 TO CANCEL"<<endl;
   cin>>confirmation;
   if (confirmation==1) {
      if (Amount <= x) {
         x -= Amount;
         cout<<"Transaction Complete"<<endl;
         cout<<"YOUR BALANCE IS $"<<x<<endl;
         return x;
      }
      else if (Amount > x) {
         cout<<"TRANSACTION DENIED a"<<endl;
         cout<<"You cannot withdraw more than your actual balance..."<<endl;
         return 0;
      }
      else {
         cout <<x  << endl;
         cout<<"TRANSACTION DENIED a"<<endl;
         cout<<"Your purchase must be greater than or at least equal to $1"<<endl;
        return 0;
      }
   }
   else if (confirmation==2) {
      cout<<"YOU HAVE CHOSEN TO CANCEL YOUR ZESA TRANSACTION"<<endl;
      //    transaction(bal, pass);
   }
   else 
{
cout << "Invalid selection" << endl;
return 0;
}
    }

第二次循环时,它失败了。

并非nyaradzo中的所有路径都返回值。您应该启用所有编译器警告。它应该提醒你这一点。由于x = bal和您只在数量ok时修改x,因此将此添加为函数的最后一行:

return x;

x的类型改为double。或者去掉x,使用bal

而且,我认为你想保持一个运行平衡。然后应该将for循环更改为:

for (int i = 0; i < 5; i++) {
  Balance = nyaradzo(Balance, i);
}