if-statement - 为什么我的程序最后没有单独读取我的 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)
解决方案
您的程序有效:
#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
推荐阅读
- ruby-on-rails - 如何使用 XPath 捕获部分 ap 标签
- spring - 无法在 Spring Boot 应用程序的 application.properties 中获取环境变量
- sql - Oracle SQL 自动创建 VARCHAR 递增 PK
- intellij-idea - 获取用户在过去一小时内在 IDE 中所做的未提交/版本化更改
- windows - 在配置时从 CMake 中获取当前 Windows SDK 和 C++ RT 的路径
- python - 加入房间时的 SocketIO 意外行为
- entity-framework - Linq查询选择带有连接的属性列表
- android - 应用无法连接到 Firebase 实时数据库
- mongodb - 连接远程机器上运行的mongodb
- elasticsearch - 弹性搜索:hour_minute_second 映射返回空数据