//#include conio.h
//#include iomanip
//#include iostream
//#include string

using namespace std;

const string Zo;
double Sp;
double Li;
double Ti;

void main()
{
    cout<<setiosflags(ios::fixed);
    cout<<setprecision (2);
    cout<<setw(22)<<"Speeding Ticket"<<endl;
    cout<<"Please Enter Your Speed :";
    cin>>Sp;
    cout<<"Speed Limit:";
    cin>>Li;
    cout<<"IF School Zone Enter (Yes/No):";
    cin>>"Yes"||"No";

    if(Zo=="Yes")
        Ti=30+6*(Sp-Li);
    else
        Ti=30+3*(Sp-Li);
    if (Sp>=Li+30)
        Ti=Ti+100;

    cout<<"Your Speeding Ticket Is:"<<"$"<<Ti<<endl;
    getch();
}


这不是我对第一个尝试的第一次尝试,它是cin>>Zo,但是老师说找到了一种更好的方法,因此,如果用户输入错误,它将知道。我是一个初学者,所以我尽可能地做到了。

最佳答案

我想您的老师想要更好的数学(这意味着您的应用程序有更好的逻辑),可能的变体之一是:

const double additionalTicket = (Sp >= Li+30) ? 100 : 0;
const double schoolZoneMultiplier = (Zo == "Yes") ? 6 : 3; // be sure that you understand when to use strcmp and when ==
Ti = 30 + schoolZoneMultiplier*(Sp-Li) + additionalTicket;


这个变体也一样,但是您会看到实际的公式,因此通常这样的代码更易于理解,并且该代码的某些部分可以由CPU并行执行

注意:您在cin>>"Yes"||"No";上遇到问题-这只是没有意义

关于c++ - 我的程序运行良好,但老师希望它更有效率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19530477/

10-13 03:00