我将不胜感激任何可以提供的帮助。我正在研究基于三面输入评估三角形的课程。尽管如此,我在分析的一些算法上相当遗憾。例如,我觉得我的最大的,最小的和类型三角形算法是正确的,但前两个返回零,并且类型返回等边等腰。最后,我几乎完全迷失在isTriangle和isRight。我知道他们错了,但我无法弄清楚要做出什么样的调整。 :/三角类C++
#include "Triangle.h"
#include<iostream>
#include<string>
using namespace std;
Triangle::Triangle()
{
s1 = 1;
s2 = 1;
s3 = 1;
}
Triangle::Triangle(int x)
{
s1 = x;
s2 = x;
s3 = x;
}
Triangle::Triangle(int x, int y, int z)
{
s1 = x;
s2 = y;
s3 = z;
}
void Triangle::setSide1(int x)
{
s1 = x;
}
void Triangle::setSide2(int x)
{
s2 = x;
}
void Triangle::setSide3(int x)
{
s3 = x;
}
int Triangle::getSide1()
{
return s1;
}
int Triangle::getSide2()
{
return s2;
}
int Triangle::getSide3()
{
return s3;
}
int Triangle::perimeter()
{
int perim = s1 + s2 + s3;
return perim;
}
int Triangle::largestSide()
{
int largest = 0;
if (s1 >= s2 && s3)
s1 = largest;
else if (s2 >= s1 && s3)
s2 = largest;
else
s3 = largest;
return largest;
}
int Triangle::smallestSide()
{
int smallest = 0;
if (s1 <= s2 && s1 <= 3)
smallest = s1;
else if (s2 <= s1 && s2 <= s3)
smallest = s2;
else
smallest = s3;
return smallest;
}
bool Triangle::isRight()
{
if (s3 == s1 + s2 || s2 == s1 + s3 || s1 == s2 + s3)
return true;
else
return false;
}
bool Triangle::isTriangle()
{
if (s1 + s2 < s3 || s1 + s3 < s2 || s2 + s3 < s1)
return false;
else
return true;
}
string Triangle::typeTriangle()
{
if (&Triangle::isTriangle == false)
return "This is not a triangle";
else if (s1 == s2 == s3)
return "Equilateral";
else if ((s1 == s2 && s1 != s3 && s2 != s3) || (s2 == s3 && s2 != s1 && s3 != s1))
return "Isosceles";
else if (s1 != s2 && s2 != s3)
return "Scalene";
}
s1 =最大;使成员const显示事情线这一点。 –
我会建议查看三角形的定义以确定如何最好地对它们进行分类。 (特别是三角函数)记住三角形是由它们的ANGLES和SIDES定义的。截至目前,你只是评估双方。 –
在C++中不是's1 == s2 == s3'是否等于(s1 == s2)== s3'? (即,你会比较's3'到'0'或'1')。 – Siguza