简单的C ++计算提供奇数输出

时间:2018-10-08 05:48:04

标签: c++

我正在使用C ++程序来计算不同速度下的超速罚单。

“(城市)的超速罚单罚款政策为$ 50,超出上限的每mph收取$ 5,超过85 mph的任何罚款$ 250。编写一个接受速度限制和时钟速度的程序,可以打印如果速度不合法,则会显示一条消息指示速度合法或打印罚款金额。在程序中,您还需要显示英里数是否超过了速度限制以及他/她是否以超过85 mph的速度行驶。”

这是我的代码:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {

    double speedlimit,clockedspeed,speeddifference,fineunder85,fineover85;

    speeddifference = clockedspeed-speedlimit;
    fineunder85 = (speeddifference*5)+50;
    fineover85 = (speeddifference*5)+300;

    cout<<"Enter the speed limit: "<<endl;
    cin>>speedlimit;
    cout<<"Enter the clocked speed: "<<endl;
    cin>>clockedspeed;

    if ((clockedspeed > speedlimit) && (clockedspeed > 85))
    {
        cout<<"The clocked speed is:     Illegal"<<endl;
        cout<<"Miles over the speed limit: "<<setprecision(2)<<speeddifference<<endl;
        cout<<"Driving over 85 mph: Yes"<<endl;
        cout<<"The fine is: $"<<setprecision(2)<<fineover85<<endl;
    }
    else {
        cout<<"The clocked speed is:     Illegal"<<endl;
        cout<<"Miles over the speed limit: "<<setprecision(2)<<speeddifference<<endl;
        cout<<"Driving over 85 mph: No"<<endl;
        cout<<"The fine is: $"<<setprecision(2)<<fineunder85<<endl;

    }
}   

我收到的“速度差异”之类的输出很奇怪,例如“ -7e-310”,罚款没有增加额外的罚款(超出限制5美元/英里),而只输出“ 50美元”或“ 300美元”。

只是在寻求帮助,我到处搜索了,但很快就发现了。

全部

1 个答案:

答案 0 :(得分:2)

您正在计算速度差和罚款,甚至没有输入数字!请记住,程序逐行运行(没有函数,类等,仅是过程编程)。此外,您在声明变量时未使用设置值定义变量,这就是为什么要获取随机值的原因。

移动:

speeddifference = clockedspeed-speedlimit;
fineunder85 = (speeddifference*5)+50;
fineover85 = (speeddifference*5)+300;

到收到输入后。

修改: 似乎还有许多其他错误,我已尽力解决了所有这些错误。这是改版的版本。

#include <iostream>

int main()
{
    double fine = 0;

    double speed_limit;
    double clocked_speed;

    std::string over_85 = "no";

    std::cout << "Speed limit:\n";
    std::cin >> speed_limit;

    std::cout << "Clocked speed:\n";
    std::cin >> clocked_speed;

    double speed_difference = clocked_speed - speed_limit;

    fine += 50 + speed_difference * 5;

    if (clocked_speed > 85) {
        fine += 250;
        over_85 = "yes";
    }

    if (clocked_speed <= speed_limit) {
        std::cout << "\nLegal\n";
    }

    else {
        std::cout << "\nIllegal\n"
                << "Miles over: " << speed_difference << '\n'
                << "Over 85mph: " << over_85 << '\n'
                << "Fine: $" << fine << '\n';
    }
}

更改

  • 设置变量string over_85;以消除对复杂的if语句的需要。
  • 不再需要两次罚款,而在一条if语句中处以一笔罚款,以在必要时增加$ 250的罚款。