c++急急急急急急!!判断三角形类型(程序需要运用函数)

输入三角形的三条边a,b,c,判断他们能否构成三角形,指出是何种三角形(等腰三角形,等边三角形,直角三角形,等腰直角三角形,一般三角形).写出程序及结果
我提高了悬赏,若你修改的程序能符合我的要求 就选为满意回答

#include <iostream>
using namespace std;
int main()
{
int s1,s2,s3;
cout<<"请输入三条边"<<endl;
cin>>s1>>s2>>s3;
if((s1+s2<=s3)||(s2+s3<=s1)||(s1+s3<=s2))
{
cout<<"不能构成三角形"<<endl;
return 0;
}
else
{
if(s1==s2&&s2==s3)
cout<<"是等边三角形"<<endl;
else if((s1==s2)||(s2==s3))
{
if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
cout<<"是等腰直角三角形"<<endl;
else
cout<<"等腰三角形"<<endl;
}
else if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
cout<<"直角三角形"<<endl;
else
cout<<"一般三角形"<<endl;
}
}

追问

我是c语言的初学者,我看了一下你写的程序,有些我都看不懂,有些还觉得很奇怪,这是我的作业,你确定我能这样抄么
#include ?
using namespace std; ?
cout>s1>>s2>>s3; ?

追答

你学的是C吧?但你说的不懂的那个就是C++的,你等下我就改好!

#include <stdio.h>
int main()
{
    int s1,s2,s3;
    printf("请输入三条边\n");
    scanf("%d %d %d",&s1,&s2,&s3);
    if((s1+s2<=s3)||(s2+s3<=s1)||(s1+s3<=s2))
    {
        printf("不能构成三角形\n");
    }
    else
    {
        if(s1==s2&&s2==s3)
            printf("是等边三角形\n");
        else if((s1==s2)||(s2==s3))
        {
            if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
                printf("是等腰直角三角形\n");
            else
                printf("等腰三角形\n");
        }
        else if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
            printf("直角三角形\n");
        else
            printf("一般三角形\n");
    }
}

追问

这样的话我完全看明白了,但是这个算是运用到了函数么,谢谢啦

追答

没有运用到函数的,只是一般的三角形的判断方法!
如果没有疑问的话麻烦选为满意答案!

追问

c++急急急急急急!!判断三角形类型(程序需要运用函数)
可是,我这道题目 指名要用到函数的,你能再改一下么,

追答

你等下!我知道了,运用函数的意思是要写其它函数由主函数调用的意思!马上就改好!

追问

还有多久才能改好啊,

追答#include <stdio.h>
int f1(int s1,int s2,int s3)
{
if((s1+s2<=s3)||(s2+s3<=s1)||(s1+s3<=s2))
return 1;
return 0;
}
int f2(int s1,int s2,int s3)
{
if(s1==s2&&s2==s3)
{
         printf("是等边三角形\n");
 return 1;
}
      else if((s1==s2)||(s2==s3))
      {
         if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
 {
              printf("是等腰直角三角形\n");
  return 1;
 }
          else
  {
           printf("等腰三角形\n");
   return 1;
  }
        }
  return 0;
}
int f3(int s1,int s2,int s3)
{
if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2))
return 1;
return 0;
}
int main()
{
    int s1,s2,s3;
    printf("请输入三条边\n");
    scanf("%d %d %d",&s1,&s2,&s3);
    if(f1(s1,s2,s3))
    {
       printf("不能构成三角形\n"); 
    }
    else
    {
int temp;
        temp=f2(s1,s2,s3);
if(!temp)
{
        if(f3(s1,s2,s3))
            printf("直角三角形\n");
        else
            printf("一般三角形\n");
}
    }
}//可以了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-27
#include<stdio.h>
int tr(double a[])//判断是否能构成三角形
{
return (a[0]>=(a[1]+a[2]));
}
int zhijiao(double a[])//判断是否为直角三角形
{
if(a[0]*a[0]==(a[1]*a[1]+a[2]*a[2]))return 1;
else return 0;
}
int deng(double a[])//判断是否为等腰、等边三角形
{
long n=0;
if(a[0]==a[1])n++;
if(a[0]==a[2])n++;
if(a[1]==a[2])n++;
return n;
}
int main()
{
double a[3],c,e;
printf("输入三条边的长度:");scanf("%lf %lf %lf",a,a+1,a+2);
if(a[1]>a[0]){c=a[1];a[1]=a[0];a[0]=c;}
if(a[2]>a[0]){c=a[2];a[2]=a[0];a[0]=c;}

if(tr(a)){printf("无法构成三角形\n");return 0;}
c=zhijiao(a);e=deng(a);
if(e==3)printf("该三角形为等边三角形\n");
else if(e&&c)printf("该三角形为等腰直角三角形\n");
else if(e)printf("该三角形为等腰三角形\n");
else if(c)printf("该三角形为直角三角形\n");
else printf("该三角形为一般三角形\n");

return 0;
}
第2个回答  2013-10-27

#include <iostream.h>void main(){ cout<<"请输入三角形三边"<<endl; int a,b,c; cin>>a>>b>>c; if ((a + b) <= c || (a - b) >= c || (a+c) <= b || (a - c) >=b || (b+c)<= a || (b-c)>=a) { cout<<"三角形不成立!"<<endl; } else { if (a==b) { if (a==c) { cout<<"等边"<<endl; } else if (a!=c&&a*a+b*b==c*c) { cout<<"等腰直角"<<endl; } else { cout<<"等腰"<<endl; } } else if (a==c) { if (a==b) { cout<<"等边"<<endl; } else if (a!=c&&a*a+c*c==b*b) { cout<<"等腰直角"<<endl; } else { cout<<"等腰"<<endl; } } else if (b==c) { if (a==b) { cout<<"等边"<<endl; } else if (a!=c&&a*a==c*c+b*b) { cout<<"等腰直角"<<endl; } else { cout<<"等腰"<<endl; } } else { if (a*a==c*c+b*b || a*a+c*c==b*b || a*a+b*b==c*c) { cout<<"直角"<<endl; } else { cout<<"其他"<<endl; } }   }}

说白了是对三角形的数学判断,就是三角形三边性质,成立的条件是两边之和大于第三边,之差小于第三边。

第3个回答  2013-10-28
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int triangle(int a,int b,int c){
if(a+b<=c || a+c<=b || b+c<=a) return 0;
else if(a==b && b==c && c==a) return 2;
else if(a==b && a*a+b*b==c*c || a==c && a*a+c*c==b*b || b==c && b*b+c*c==a*a) return 4;//
else if(a==b || b==c || c==a) return 1;
else if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a) return 3;
else return 5;
}
void main(void){
int a,b,c;
printf("Type a,b&c...\n");
printf("a,b,c=");
scanf("%d%d%d",&a,&b,&c);
switch(triangle(a,b,c)){
case 0:
printf("\n不构成三角形.\n");
break;//Don't make a triangle
case 1:
printf("\n构成等腰三角形.\n");
break;//Constitute an isosceles triangle
case 2:
printf("\n构成等边三角形.\n");
break;//Form an equilateral triangle
case 3:
printf("\n构成一般直角三角形.\n");
break;//A right triangle
case 4:
printf("\n构成等腰直角三角形.\n");
break;//Constitute an isosceles right triangle
case 5:
printf("\n一个一般三角形.\n");
break;//General triangle
default: break;
}
printf("\n");
}
第4个回答  2013-10-28
#include <stdio.h>

int isdengbian(int s1, int s2, int s3) {
return (s1==s2&&s2==s3);
}

int isdengyao(int s1, int s2, int s3) {
return ((s1==s2)||(s2==s3));
}

int iszhijiao(int s1, int s2, int s3) {
if((s1*s1+s2*s2==s3*s3)||(s2*s2+s3*s3==s1*s1)||(s1*s1+s3*s3==s2*s2)){
return 1;
}
return 0;
}

int main()
{
    int s1,s2,s3;
    printf("请输入三条边\n");
    scanf("%d %d %d",&s1,&s2,&s3);
    if((s1+s2<=s3)||(s2+s3<=s1)||(s1+s3<=s2))
    {
        printf("不能构成三角形\n");
        return 0;
    }
    else
    {
        if(isdengbian(s1,s2,s3))
            printf("是等边三角形\n");
        else if(isdengyao(s1,s2,s3))
        {
            if(iszhijiao(s1,s2,s3))
                printf("是等腰直角三角形\n");
            else
                printf("等腰三角形\n");
        }
        else if(iszhijiao(s1,s2,s3))
            printf("直角三角形\n");
        else
            printf("一般三角形\n");
    }

return 0;
}

相似回答