首页 > 解决方案 > 为什么我的程序最后没有单独读取我的 while 循环中的 else 语句。无论我做什么它总是包括其他

问题描述

这是我的代码:

#include <iostream>
using namespace std;
```c++
int main()
{
    do
    {
        int sideA, sideB, sideC;
        cout << "Please enter side A: ";
        cin >> sideA;
        while (sideA < 0) {
            cout << "Value entered must be positive!" << endl;
            cout << "Please enter side A: ";
            cin >> sideA;
        }
        cout << "Please enter side B: ";
        cin >> sideB;
        while (sideB < 0) {
            cout << "Value entered must be positive!" << endl;
            cout << "Please enter side B: ";
            cin >> sideB;
        }
        cout << "Please enter side C: ";
        cin >> sideC;
        while (sideC < 0) {
            cout << "Value entered must be positive!" << endl;
            cout << "Please enter side C: ";
            cin >> sideC;
        }
        int aSquare = sideA * sideA;
        int bSquare = sideB * sideB;
        int cSquare = sideC * sideC;
        if (sideA == sideB && sideA == sideC && sideB == sideC)
            cout << "This is an EQUILATERAL triangle!(all sides are equal)" << endl;
        else if (sideA == sideB && sideA != sideC && sideB != sideC)
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl;
        else if (sideA != sideB && sideA == sideC && sideB != sideC)
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl;
        else if (sideA != sideB && sideA != sideC && sideB == sideC)
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl;
        else if (cSquare==aSquare+bSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else if (aSquare == cSquare + bSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else if (bSquare == aSquare + cSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else
            cout << "This is a OTHER kind of triangle, not ISOSCELES, not RIGHT, not EQUILATERAL" << endl;
        int repeat;
        cout << "Would you like to repeat( 1-YES, 2-NO)";
        cin >> repeat;
        if (repeat == 1)
            continue;
        if (repeat == 2)
            break;
    }
    while (true);
}

它不应该声明:“这是另一种三角形,不是等腰三角形,不是对的,不是等边的”。它也确实使等边和正确的条件正确,但对于等腰线甚至没有进入 else if。

我尝试了很多东西,但无济于事。

样本输出:

Please enter side A: 1
Please enter side B: -10
Value entered must be positive!
Please enter side B: 1
Please enter side C: 1
This is an EQUILATERAL triangle!(all sides are equal)
This is a OTHER kind of triangle, not ISOSCELES, not RIGHT, not EQUILATERAL
Would you like to repeat( 1-YES, 2-NO)
1
Please enter side A: 1
Please enter side B: 1
Please enter side C: 2
This is a OTHER kind of triangle, not ISOSCELES, not RIGHT, not EQUILATERAL
Would you like to repeat( 1-YES, 2-NO)

标签: if-statementwhile-loop

解决方案


您的程序有效:

#include<iostream>
using namespace std;
int main() { 
    while (true) { 
        int sideA, sideB, sideC; 
        cout << "Please enter side A: "; 
        cin >> sideA; 
        while (sideA < 0) { 
            cout << "Value entered must be positive!" << endl; 
            cout << "Please enter side A: "; 
            cin >> sideA; 
        } 
        cout << "Please enter side B: "; 
        cin >> sideB; 
        while (sideB < 0) {     
            cout << "Value entered must be positive!" << endl; 
            cout << "Please enter side B: "; 
            cin >> sideB; 
        } 
        cout << "Please enter side C: "; 
        cin >> sideC; 
        while (sideC < 0) { 
            cout << "Value entered must be positive!" << endl; 
            cout << "Please enter side C: "; 
            cin >> sideC; 
        } 
        int aSquare = sideA * sideA; 
        int bSquare = sideB * sideB; 
        int cSquare = sideC * sideC; 
        if (sideA == sideB && sideA == sideC && sideB == sideC) 
            cout << "This is an EQUILATERAL triangle!(all sides are equal)" << endl; 
        else if (sideA == sideB && sideA == sideC && sideB != sideC) 
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl; 
        else if (sideA == sideB && sideA != sideC && sideB == sideC) 
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl; 
        else if (sideA != sideB && sideA == sideC && sideB == sideC) 
            cout << "This is an ISOSCELES triangle, where only two sides are equal" << endl;
        else if (cSquare==aSquare+bSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else if (aSquare == cSquare + bSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else if (bSquare == aSquare + cSquare)
            cout << "This is a RIGHT triangle!" << endl;
        else
                cout << "This is a OTHER kind of triangle, not ISOSCELES, not RIGHT, not EQUILATERAL" << endl;
        int repeat;
            cout << "Would you like to repeat( 1-YES, 2-NO)";
            cin >> repeat;
        if (repeat == 1)
            continue;
        if (repeat == 2)
            break;
    }
}
Please enter side A: 1
Please enter side B: 1
Please enter side C: 1
This is an EQUILATERAL triangle!(all sides are equal)
Would you like to repeat( 1-YES, 2-NO)2

推荐阅读