首页 > 解决方案 > 我一直收到相同数量的高级服务使用分钟数和到期金额

问题描述

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

#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;
}

标签: c++

解决方案


您好,欢迎来到 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 的值)


推荐阅读