c++ - 我一直收到相同数量的高级服务使用分钟数和到期金额
问题描述
我不断得到一个固定的数字,用于使用高级服务的分钟数和到期金额。我试过放括号,它仍然给我一个固定的数字。我还尝试更改乘法的加法符号,但我仍然得到一个固定数字。如果我的代码还有其他问题,请指出,我将不胜感激。
#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;
}
解决方案
您好,欢迎来到 Stack Overflow (SO)。
几点建议:
- 尝试使您的代码可读。重构!重构不仅会向您展示您的代码在哪些地方缺乏关注,而且还会暴露逻辑错误。
- 始终在变量位于范围内时对其进行初始化。只有当它免费提供时,C++ 才会初始化你的变量。
@本地范围:
void foo()
{
int num; //num is undefined - i.e. garbage value
}
@全局范围
int num; //num is 0.
- 理想情况下,floats 后面应该跟一个 .f 以避免从 double 转换。前任:
float b = 10.0f;
- 创建程序的简化版本并在rextester.com上运行它以确保它可以正常工作,然后再发布到 SO 上。
我试图在下面快速简化您的代码,它似乎对我有用。不过,我不确定您的程序的逻辑。您可能需要重新访问几个部分。
代码可以在这里找到。(在 rextester 上运行代码之前,单击显示输入并输入 cin 的值)
推荐阅读
- javascript - 使用 axios.all() 和 axios.spread() “找不到变量”方法错误
- django - 同一对模型的一对一和多对一关系
- r - 将成对数据转换为符合 prefmod 的列顺序
- python - 执行 Selenium Python 自动化脚本时出错
- sql - 转换函数 SQL Server
- three.js - 场景中两个对象之间的三个 js RayCast
- javascript - 下面的代码是异步的吗?
- ios - 在 Xcode 10 中设置状态栏样式
- java - 如何从属性名称中给出的json中读取属性值
- caching - 如何在 .net-core-2.1 中使用内存缓存避免缓存未命中