为我的 c++ 类介绍制作一个三角形分类器.我有几个问题

Making a triangle classifier for my intro to c++ class. I have a few questions

本文关键字:一个 三角形 分类器 几个问题 c++ 我的      更新时间:2023-10-16

首先,我正在尝试找到一种方法来防止在执行最终集合中的 if 语句之一时运行其余代码。

我还想知道是否有更有效的方法来尝试确定给定边的最长和中间边。

我的代码:

#include <cstdlib>
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double sideOne = 1;
double sideTwo =2 ;
double sideThree = 3;
int main() 
{
cout<<fixed;
cout<<"Enter three numbers, corresponding to the side lengths of a triangle."<<endl;
while (sideOne+sideTwo <= sideThree || sideThree+sideOne <= sideTwo || sideTwo+sideThree <= sideOne)
{
cout<<"Enter the first side length."<<endl;
cin>>sideOne;
cout<<"Enter the second side length."<<endl;
cin>>sideTwo;
cout<<"Enter the third side length."<<endl;
cin>>sideThree;
if (sideOne+sideTwo <= sideThree || sideThree+sideOne <= sideTwo || sideTwo+sideThree <= sideOne)
{
cout<<setprecision(3)<<"The input "<<sideOne<<", "<<sideTwo<<", "<<sideThree<<" does not satisfy the triangle inequality. Enter different side lengths."<<endl;
}
else
{
double perimeter = sideOne + sideTwo + sideThree;
double area = sqrt((perimeter/2)*((perimeter/2)-sideOne)*((perimeter/2)-sideTwo)*((perimeter/2)-sideThree));
cout<<"The perimeter of your triangle is "<<setprecision(3)<<perimeter<<endl;
cout<<"The area of your triangle is "<<setprecision(3)<<area<<endl;
if (sideOne >= sideTwo && sideTwo >= sideThree)
{
cout<<"The longest side is "<<sideOne<<endl;
cout<<"The median side is "<<sideTwo<<endl;
}
else if (sideTwo >= sideOne && sideOne >= sideThree)
{
cout<<"The longest side is "<<sideTwo<<endl;
cout<<"The median side is "<<sideOne<<endl;
}
else if (sideThree >= sideOne && sideOne >= sideTwo)
{
cout<<"The longest side is "<<sideThree<<endl;
cout<<"The median side is "<<sideOne<<endl;
}
else if (sideOne >= sideThree && sideThree >= sideTwo)
{
cout<<"The longest side is "<<sideOne<<endl;
cout<<"The median side is "<<sideThree<<endl;
}   
else if (sideTwo >= sideThree && sideThree >= sideTwo)
{
cout<<"The longest side is "<<sideTwo<<endl;
cout<<"The median side is "<<sideThree<<endl;
}   
else if (sideThree >= sideTwo && sideTwo >= sideOne)
{
cout<<"The longest side is "<<sideThree<<endl;
cout<<"The median side is "<<sideTwo<<endl;
}
}
}
return 0;
}

我对此很陌生,所以新手词汇将不胜感激。感谢您的任何帮助

您可以随时通过调用 return 来阻止函数的其余部分。然而,如果,否则如果,否则如果的更好选择......结构只是使用开关盒。

有更有效的方法来查找最长边和中间边。 您多次比较相同的侧面。 这方面的一个例子是:

if (sideOne >= sideTwo && sideTwo >= sideThree)
...
else if (sideTwo >= sideThree && sideThree >= sideTwo)

尝试只比较每边一次。