我想使用开关我不能!!
#include <iostream>
using namespace std;
int main() {
char op ;
float x, y, z;
cout << "Enter the three angles : \n ";
cin >> x >> y >> z;
switch (op){
case '+' :
cout << x + y + z == 180;
break;
default:
cout << "A triangle is Not valid !! \n ";
}
system("pause");
}
答案 0 :(得分:2)
您可以使用switch
替代if
,如下所示:
#include <math.h>
switch(static_cast<int>(round(x + y + z))) {
case 180:
cout << "The triangle is valid\n";
break;
default:
cout << "The triangle is not valid\n";
break;
}
我使用round()
来缓解浮点数学是近似的问题。
答案 1 :(得分:0)
如果要根据结果进行切换,那么Baramr的方法就是你想要的。
为了完整性: 如果分配是基于操作来切换,则可能会使用条件中的中断并进入默认值,或者如果您有多个操作,则转到标签。
两者都失败并且显式跳转被认为是不好的做法,但是当你学习切换时,你应该知道它们至少存在以进行调试。
switch (op){
case '+' :
if( (static_cast<int>(round(x + y + z))) == 180 ){
cout << "The triangle is valid\n";
break;
}
default:
cout << "A triangle is Not valid !! \n ";
}
答案 2 :(得分:0)
奖金验证:检查角度值是否为负值。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float x, y, z;
cout << "Enter the three angles : \n ";
cin >> x >> y >> z;
if (x <= 0 || y <= 0 || z <= 0) {
cout << "Invalid angles" << endl;
system("pause");
return 0;
}
switch (static_cast<int>(round(x + y + z))){
case 180:
cout << "Valid triangle" << endl;;
break;
default:
cout << "A triangle is Not valid !! \n ";
}
system("pause");
}