2015-07-12 72 views
0

我将不胜感激任何可以提供的帮助。我正在研究基于三面输入评估三角形的课程。尽管如此,我在分析的一些算法上相当遗憾。例如,我觉得我的最大的,最小的类型三角形算法是正确的,但前两个返回零,并且类型返回等边等腰。最后,我几乎完全迷失在isTriangleisRight。我知道他们错了,但我无法弄清楚要做出什么样的调整。 :/三角类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"; 



} 
+1

s1 =最大;使成员const显示事情线这一点。 –

+2

我会建议查看三角形的定义以确定如何最好地对它们进行分类。 (特别是三角函数)记住三角形是由它们的ANGLES和SIDES定义的。截至目前,你只是评估双方。 –

+0

在C++中不是's1 == s2 == s3'是否等于(s1 == s2)== s3'? (即,你会比较's3'到'0'或'1')。 – Siguza

回答

2

如果S1 == s2 == s3是真的,并不意味着边相等。

你需要写S1 S2 == & & S1 == S3

看到这一点,改写为布尔值。将b1设置为false并且b2不等于b3。

B2 == b3是错误的,并将与b1进行比较。哎呀。

当且仅当长边的平方是短边的平方和时,您的三角形有一个直角。

+0

难道你不是指s1 == s2 && s1 == s3 –

+0

糟糕。谢谢。 – Bathsheba