我需要以下代码帮助我:
声明3个double
类型变量,每个变量代表三角形的三个边之一。
提示用户输入第一面的值,然后
将用户输入设置为您创建的表示三角形第一面的变量。
再重复最后两个步骤,对三角形的剩余两边各执行一次。
使用一系列嵌套的if
/ else
语句来确定用户设置的具有边长的三角形是否为EQUILATERAL,ISOSCELES或SCALENE三角形。
[注意:请查看“三角形”上的维基百科页面,了解这三种三角形的定义。]
将生成的三角形类型打印到控制台。
确保三角探测器的运行方式为5次,如上例所示。您可以使用与示例中相同的值。
我目前有:
//lab eleven program code on triangles
#include <iostream.h>
main()
{
//variables
float aside, bside, cside;
//enter side a
cout<<"enter the length of side a "<<endl;
cin>>aside;
//enter side b
cout<<"enter the length of side b "<<endl;
cin>>bside;
//enter side c
cout<<"enter the length of side c "<<endl;
cin>>cside;
// all sides equal
if(aside==bside && bside==cside)
cout << "Equilateral triangle\n";
// at least 2 sides equal
else if(aside==bside || aside==cside || bside==cside)
cout << "Isosceles triangle\n";
// no sides equal
else
cout << "Scalene triangle\n";
}
但我需要if
和else if
语句的帮助来确定类型三角形。我们的教授在课堂上没有涉及这个主题。
我们在Windows上使用程序Ch 6.3。
答案 0 :(得分:2)
if(a==b && b==c) // all sides equal
cout << "Equilateral triangle\n";
else if(a==b || a==c || b==c) // at least 2 sides equal
cout << "Isosceles triangle\n";
else // no sides equal
cout << "Scalene triangle\n";
答案 1 :(得分:2)
正如你的教授建议的那样,你应该看看:
http://en.wikipedia.org/wiki/Triangle#Types_of_triangles
您还应该看看:
http://www.teacherschoice.com.au/maths_library/trigonometry/solve_trig_sss.htm
算法:
Solve for all angles, a1, a2, a3 (see the article above)
If you can't find a solution:
Output "Error: Not a valid triangle"
Else:
If (a1 == a2) && (a2 == a3):
Output "EQUILATERAL" and stop
If (a1 == a2) || (a2 == a3) || (a1 == a3):
Output "ISOSCELES" and stop
Output "SCALENE" and stop
另请注意:请注意浮点(float
/ double
)值(例如角度)的“相等性”。如果你正在做这样的比较,你通常应该使用它:
abs(x - y) < epsilon
epsilon
是“足够小的值”。
答案 2 :(得分:2)
逻辑完全不同于这些不同类型的三角形的定义,正如教授指出的那样,这些信息很容易从维基百科中获得。它只涉及边长的简单比较;你不必走远角。但我会给你一些“非三角”条件的帮助。不要害怕在这里戴上你的数学帽而去徘徊,对于一个poli sci学生来说,一点点逻辑并不是一件坏事。 : - )
对于双方制作一个正确的三角形,对于每一对(我称之为f
和g
),它们必须加起来大于第三方的长度(我'将其称为h
)。如果你正在处理等边三角形,你会自动知道这个条件是否满足(为什么?)。如果你正在处理等腰或斜角三角形,你在技术上只需要检查较小的两边与最大的一边,如果对它们是正确的,那么对于其他两种情况也是如此(为什么?)。但是,检查所有三种情况可能同样方便。
看看为什么这个不平等必须成立:如果双方的总和完全等于第三方的长度,你就会有一个“退化”三角形,其中边f
和g
可以只在h
之上!如果他们加起来更少,双方可以连接到h
的端点,但在第三点永远不会见面!您可以通过剪切长度的纸条或试纸来自行测试。
要考虑的其他三件事:
double
和float
不是一回事。一个的精度低于另一个。确保你使用教授要求的那个。f
和g
之和是否介于h - epsilon
和h + epsilon
之间 - 或换句话说,无论绝对值是多少f + g - h
小于或等于epsilon
。如果是,您声称f + g = h
(尽可能最好)并处理退化案例。答案 3 :(得分:1)
要完成此计划,您需要具备以下条件:
确保输入有效。在这种情况下,输入必须大于0.您可以使用类似
的循环捕获输入 while (invar <= 0)
{
cout<<"Enter length"<<endl;
cin>>invar;
if (invar <= 0)
{
cout<<"invalid input"<<endl;
}
}
我不确定这是否是正确的c ++语法,我在大约8年内没有使用它。 你可以为所有3个输入执行此操作。我可能会使用3个输入变量和1个返回变量来确定三角形的函数。以下是伪代码
if (a + b <= c) or (a + c <= b) or (b + c <= a)
{
return "you don't have a triangle."
}
else
{
if (a == b) or (a == c) or (b == c)
{
if (a == b and b == c)
{
return "equilateral"
}
return "isosceles"
}
return "scalene"
}
return -1
答案 4 :(得分:0)
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#include<math.h>
int main()
{
float Side1,Side2,Side3;
float Flag1,Flag2,Sum_of_sq1,Sum_of_sq2,Sum_of_sq3;
clrscr();
printf("Enter Three Sides Side1 Side2 Side3 :");
scanf("%f %f %f", &Side1 , &Side2 , &Side3);
Flag1=(Side1==Side2)?(Side2==Side3?1:0):((Side2==Side3)?0:-1);
if(Flag1==0)
{ printf("Triangle is Isoceles\n");
}
if (Flag1==1)
{ printf("Equilateral Triangle");
}
Sum_of_sq1=pow(Side1,2)+pow(Side2,2);
Sum_of_sq2=pow(Side1,2)+pow(Side3,2);
Sum_of_sq3=pow(Side2,2)+pow(Side3,2);
if (sqrt(Sum_of_sq1)==Side3 ||sqrt(Sum_of_sq2)==Side2 || sqrt(Sum_of_sq3)==Side1)
printf("The Triangle is Right Angled Triangle");
getch();
return(0);
}
答案 5 :(得分:0)
#include<iostream>
using namespace std;
//create a class
class Triangle {
//declare three sides for the triangle
double side1;
double side2;
double side3;
public:
//constructor to initialize the data members
Triangle(double s1, double s2, double s3) {
side1 = s1;
side2 = s2;
side3 = s3;
}
void triangleType() {
//all sides equal
if((side1 == side2)&&(side2 == side3))
cout << "It is an Equilateral Triangle" << endl;
//at least two sides are equal
else if((side1 == side2) || (side2 == side3) || (side1 == side3))
cout << "It is an Isosceles Triangle" << endl;
//all are different
else
cout << "It is a Scalene Triangle" << endl;
}
};
int main() {
//local variable
double a_side, b_side, c_side;
//taking the user inputs
cout << "Enter the three sides of a triangle: " << endl;
cin >> a_side >> b_side >> c_side;
Triangle t1(a_side, b_side, c_side); //create an object of Triangle
t1.triangleType(); //call the function
return 0;
}