我的程序工作正常但我的老师希望它更有效率

时间:2013-10-23 00:04:57

标签: c++

//#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,但老师说找到了更好的方法,所以如果用户输入有误,就会知道。我是初学者,所以我尽我所能。

3 个答案:

答案 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";有问题 - 这没有意义

答案 1 :(得分:0)

使用三元运算符并不是更好的数学,只是不同的语法可以使代码看起来更好(或者如果没有明智地使用则更糟)。

之前的帖子表明它确实没有带来任何性能提升。

Ternary operator ?: vs if...else

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

答案 2 :(得分:0)

@vincentB(抱歉,由于我的代表,我不能直接评论他们的帖子)

在编译器生成的无分支代码方面,三元运算符比if-else更高效

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