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