[英]My program crashes on the Windows machine yet it works fine on the Linux
[英]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";
-這根本沒有道理
使用三元運算符並不是更好的數學方法,只是使用不同的語法可以使代碼看起來更好(如果使用不當,則更糟)。
上一篇文章表明,它確實並沒有帶來任何性能改進。
(對不起,還不能發表評論)
@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.