gpt4 book ai didi

c++ - 为什么我的代码一直跳过我的 else 语句用于 C++?

转载 作者:行者123 更新时间:2023-12-01 14:47:52 24 4
gpt4 key购买 nike

我正在学校的一本书中做一些编程练习,练习是关于确定用户输入的边是否指示它是否是直角三角形。

要弄清楚你必须做勾股定理,即 a^2 + b^2 = c^2。我写了一个 if语句询问 if (side1 * side1) + (side2 * side2) = (side3 * side3) 那么它是一个直角三角形,如果不是我写了一个 else声明打印它不是直角三角形。下面是我写的代码。

#include <iostream>
#include <string>
#include <iomanip>

using namespace std;

int main() {
int side1=0, side2=0, side3=0;

cout << "Enter the first side of the triangle: " << endl;
cin >> side1;

cout << "Enter the second side of the triangle: " << endl;
cin >> side2;

cout << "Enter the third side of the triangle: " << endl;
cin >> side3;

if ((side1 * side1) + (side2 * side2) == side3 * side3)
{
cout << "It is a right angled triangle" << endl;
exit(1);
}

else
{
cout << "It is not a right angled triangle" << endl;
exit(1);
}
return 0;
}

我不断从我的代码中得到的回应是,一切都是一个直角三角形,这是我不想要的。

最佳答案

您应该按顺序对长度进行排序,因为 C 必须是斜边(最长边)才能使毕达哥拉斯定理起作用。在 std::array 中收集整数并使用 std::sort,如下所示:

#include <iostream>
#include <string>
#include <algorithm>
#include <array>

using namespace std;

int main(){
array<int,3> side;

cout << "Enter the first side of the triangle: " << endl;
cin >> side[0];

cout << "Enter the second side of the triangle: " << endl;
cin >> side[1];

cout << "Enter the third side of the triangle: " << endl;
cin >> side[2];

std::sort( begin(side), end(side) );

if ((side[0] * side[0]) + (side[1] * side[1]) == side[2] * side[2])
{
cout << "It is a right angled triangle" << endl;
}
else
{
cout << "It is not a right angled triangle" << endl;
}
return 0;
}

仅检查边 [2] 是最长的并不足以确定三角形是否为直角。您需要将等式中最长的边放在正确的位置。

关于c++ - 为什么我的代码一直跳过我的 else 语句用于 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61671525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com