簡體   English   中英

我的程序運行良好,但老師希望它更有效

[英]My program works fine but my teacher wants it more efficient

//#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";有問題cin>>"Yes"||"No"; -這根本沒有道理

使用三元運算符並不是更好的數學方法,只是使用不同的語法可以使代碼看起來更好(如果使用不當,則更糟)。

上一篇文章表明,它確實並沒有帶來任何性能改進。

三元運算符?:vs if ... else

(對不起,還不能發表評論)

@vincentB(對不起,由於我的代表,我無法直接在他們的帖子上發表評論)

就編譯器生成的無分支代碼而言,三元運算符可能比if-else效率更高。

http://www.altdevblogaday.com/2012/04/10/cc-low-level-curriculum-part-7-more-conditionals/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM