我正在使用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美元”。
只是在寻求帮助,我到处搜索了,但很快就发现了。
全部
答案 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的罚款。