问:如何使用开关通过角度知道三角形是否有效?

时间:2018-04-07 08:37:55

标签: c++ switch-statement

我想使用开关我不能!!

#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");
}

3 个答案:

答案 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");
}