2013-10-23 32 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

(抱歉不能把作为评论还)

相关问题