对于使用高级服务的分钟数和应付金额,我不断得到相同的数字



我一直得到一个固定的数字,用于使用高级服务的分钟数和应付金额。我尝试过加括号,但它仍然给了我一个固定的数字。我也尝试更改乘法的加号,但仍然得到一个固定的数字。如果我的代码还有其他问题,请指出,我将不胜感激。

#include <iostream>
using namespace std;
int main()
{
int Account_Number;
char Service_Code;
float Regular_Service_Standard_Fee = 10.00;
float Regular_Service_Additional_Fee = 0.20;
float Premium_Service_Stanard_Fee = 25.00;
float Premium_Service_Day_Fee = 0.10;
float Premium_Service_Night_Fee = 0.05;
int Regular_Service_Minutes;
int Premium_Service_Day_Minutes;
int Premium_Service_Night_Minutes;
int Total_Premium_Service_Minutes;
float Amount_Due = 0;
cout << "Enter account number. n";
cin >> Account_Number;
cout << "Enter service code. n";
cin >> Service_Code;
cout << "Enter number of minutes the service was used. n";
cin >> Minutes;
if (Service_Code == 'R' || Service_Code == 'r') {
cout << "Regular service selected. n";
cout << "Enter number of minutes used. n";
cin >> Regular_Service_Minutes;
}
else if (Service_Code == 'P' || Service_Code == 'p') {
cout << "Premium service selected. n";
cout << "Enter the number of minutes used during the day. n";
cin >> Premium_Service_Day_Minutes;
cout << "Enter the number of minutes used during the day. n";
cin > Premium_Service_Night_Minutes;
Total_Premium_Service_Minutes = Premium_Service_Day_Minutes + Premium_Service_Night_Minutes;
}
else
cout << "Error! Select R or P! n";
if (Regular_Service_Minutes > 50)
Amount_Due = Regular_Service_Minutes - 50 * Regular_Service_Additional_Fee + Regular_Service_Standard_Fee;
else
Amount_Due = Regular_Service_Standard_Fee;
if (Premium_Service_Day_Minutes > 75)
Amount_Due = (Premium_Service_Day_Minutes - 75) + Premium_Service_Day_Fee;
else if (Premium_Service_Night_Minutes > 100)
Amount_Due = (Premium_Service_Night_Minutes - 100) + Premium_Service_Night_Fee;
else
Amount_Due = Amount_Due + Premium_Service_Stanard_Fee;
cout << "Account # : " << Account_Number << endl;
cout << "Type of service : " << Service_Code << endl;
cout << "Number of minutes regular telephone service was used : "
<< Regular_Service_Minutes << endl;
cout << "Number of minutes premium telephone service was used : "
<< Total_Premium_Service_Minutes << endl;
cout << "Amount Due : " << Amount_Due << endl;
return 0;
}

你好,欢迎来到堆栈溢出(SO(。

几点提示:

  • 尝试使您的代码可读。重构!重构不仅会告诉你代码缺乏关注的地方,而且还会暴露逻辑错误。
  • 当变量位于作用域内时,请始终对其进行初始化。C++只会在免费时初始化您的变量。

@local范围:

void foo()
{
int num; //num is undefined - i.e. garbage value
}

@ 全局范围

int num; //num is 0.
  • 理想情况下,浮点数后应跟 .f,以避免从双精度转换。 例如:float b = 10.0f;
  • 创建程序的简化版本并在 rextester.com 上运行它以确保它正常工作,然后再发布到 SO。

我试图在下面快速简化您的代码,它似乎对我有用。不过,我不确定您的程序的逻辑。您可能需要重新访问几个部分。

代码可以在这里找到。(单击显示输入并输入CIN 的值,然后再在 RexTester 上运行代码(