2013-10-23 35 views
0
//#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但老師說找到一個更好的辦法,所以如果用戶輸入錯了,它會知道一審判決。我是一名初學者,所以我儘可能簡單地做了。我的程序工作正常,但我的老師希望它更有效率

+6

產生的網點代碼方面'空隙main'不升例如C++。你也沒有理由做這些全局變量。 – chris

+1

我認爲你的老師在做夢。這個應用程序是由控制檯綁定的,而不是CPU綁定的,所以重新編碼它沒有顯着的效率提升。我可能不會那樣寫,但我沒有看到任何「低效率」的東西。但你的老師可能比我有更多的經驗,我只有42歲。詢問他/她的意思。 – EJP

+0

老師想讓我們用 –

回答

1

我想你的老師要更好的數學(這意味着更好的邏輯我們對您的應用程序),可能的變種之一是:

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"; - 這只是沒有任何意義

0

使用三元運算符是不是更好的數學,只不同的syn可以使代碼看起來更好的稅收(如果不明智地使用,則更糟)。

此前一篇文章顯示它確實不會帶來任何性能改進。

Ternary operator ?: vs if...else

(抱歉不能把作爲評論還)

相關問題