c语言或者c++。判断三角形的形状

题目描述
编写程序,根据三角形三条边的长度判断该三角形是哪种三角形?
三角形的类型包括:等边三角形、等腰三角形、直角三角形、普通三角形
也有可能,无法组成三角形

输入
输入包括多行数据,每行包括三个正整数,a,b,c代表三角形三条边的长度

输出
针对每行输入,做如下处理后换行:
如果该三角形是等边三角形,输出DB
如果不是等边三角形,是等腰三角形,输出DY
如果不是等腰三角形,是直角三角形,输出ZJ
如果不是等边,也不是等腰,也不是直角,输出PT
如果三条边的长度无法构成三角形,输出ERROR
样例输入
3 4 5
2 2 3
样例输出
ZJ
DY

#include<iostream>

#include<string>
using namespace std;
int zhijiao(int a,int b,int c);//判断是否为直角三角形
//需要完善,做出安全检查,以确定数据的准确性
void main()
{
int a, b, c;//保存三边长度
int index = 1;//记录第几个三角形
cout << "请输入三角形的数据:";
string s;//保存输入的字符串,约定为n个三角形,每个三角形为分号隔开,三角形内每边用逗号;"1,2,3;3,4,5"
cin >> s;
char* split = strtok((char*)s.c_str(), ";");//根据分号分割字符串
while (split != NULL)
{
//cout << split << endl;//检验分割的字符串
a = (int)split[0] - 48;//char型字符转数字,'0'转化为数字48
b = (int)split[2] - 48;
c = (int)split[4] - 48;
if (!(a + b < c || a + c < b || b + c < a))
{
if (a == b || a == c || b == c)
{
if (a == b && b == c)
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等边三角形DB" <<endl;
else if (zhijiao(a, b, c))
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等腰直角三角形DZY" <<endl;
else
cout << "a = " << a << ";b = " << b << ";c = " << c << "该三角形为等腰三角形DY" <<endl;
}
else
{
if (zhijiao(a, b, c))
cout << "为非等腰直角三角形" << endl;
else
cout << "为普通三角形" << endl;
}
}
else
{
cout << "不为三角形ERROR";
}
split = strtok(NULL, ";");

}
system("pause");

}
int zhijiao(int a, int b, int c)
{
if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
{
return 1;
}
else
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-15
#include<iostream>
using namespace std;

int main()
{
int a,b,c;
enum{ERROR=-1,DB,DY,ZJ,PT};
int result[2]={0};
for(int i=0;i<2;i++)
{
cin>>a>>b>>c;
if(a+b>c && a+c>b && b+c>a)
{
if(a==b && b==c)
{
result[i]=DB;
}
else if(a==b || b==c || a==c)
{
result[i]=DY;
}
else if(a*a+b*b==c*c || a*a + c*c==b*b || b*b+c*c==a*a)
{
result[i]=ZJ;
}
else
{
result[i]=PT;
}
}else
{
result[i]=ERROR;
}
}
for(int i=0;i<2;i++)
{
switch (result[i])
{
case DB:
cout<<"DB"<<endl;
break;
case DY:
cout<<"DY"<<endl;
break;
case ZJ:
cout<<"ZJ"<<endl;
break;
case PT:
cout<<"PT"<<endl;
break;
default:
cout<<"ERROR"<<endl;
break;
}
}
system("pause");
return 0;
}

追问

运行错误

追答

什么错误你要说啊,让我猜?

追问

Runtime Error:[ERROR] A Not allowed system call: runid:155753 callid:174

Runtime Error:[ERROR] A Not allowed system call: runid:155753 callid:174

追答

呃,我不知道你是不是用C库来编译的,我用的是C++来写的。不知道是不是这个问题,如果是的话你把项目改成C++的,或者把后缀名改为.cpp。我是用Visual studio写的C++程序,我猜你可能是用Visual C++运行的,不知道我说的方法能不能解决。

本回答被提问者和网友采纳
第2个回答  2015-09-20
#include <stdio.h>
void main(void)
{
int a,b,c,temp;
while(1)
{
scanf("%d %d %d",&a,&b,&c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = temp;
}
if((c>=a+b)||(a<=c-b))
{
printf("Error\n");
continue;
}
else
{
if(a==b && b==c)
{
printf("DB\n");
continue;
}
if(a==b || b==c)
{
printf("DY\n");
continue;
}
if(c*c == a*a+b*b)
{
printf("ZJ\n");
continue;
}
printf("PT\n");
}
}
}
相似回答