标题:想通过c语言编写计算三角形面积,该怎么做呢?
只看楼主
湖心亭看雪
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-9-28
 问题点数:0 回复次数:3 
想通过c语言编写计算三角形面积,该怎么做呢?
给定平面上任意三个点的坐标(x​1​​ ,y​1​​ )、(x​2 ,y​2​​ )、(x​3​​ ,y​3​​ ),检验它们能否构成三角形。

输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x​1​​ 、y​1
​​ 、x​2​​ 、y​2​​ 、x​3​​ 、y​3​​ 。

输出格式:
若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
搜索更多相关主题的帖子: c语言 格式 输出 面积 三角形 
2019-09-28 15:17
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{ double a,b,c,d,e,f;
scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f );
double AB,BC,AC,ab,bc,ac;
ab=(a-c)*(a-c)+(b-d)*(b-d);
bc=(c-e)*(c-e)+(d-f)*(d-f);
ac=(a-e)*(a-e)+(b-f)*(b-f);
AB=sqrt(ab);
BC=sqrt(bc);
AC=sqrt(ac);
if((AB<BC+AC)&&(BC<AB+AC)&&(AC<AB+BC))
{
double l=AB+BC+AC;
double P = l / 2;
double s = sqrt(P*(P-AB)*(P-BC)*(P-AC));
printf("L = %.2f, A = %.2f",l,s); }
else
{printf ("Impossible");
}
return 0;
}
2019-09-28 17:38
湖心亭看雪
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-9-28
得分:0 
感谢楼主的分享,我正在享受楼主分享的同时,也写了一个,学习你的思路!

#include<stdio.h>
#include<math.h>
int main()
{
    double a, b, c,n;
    double x1, x2, x3, y1, y2, y3,j, q;
    scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
    a=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
    b=sqrt(pow(x1-x3,2)+pow(y1-y3,2));
    c=sqrt(pow(x3-x2,2)+pow(y3-y2,2));
    if((a+b)<=c||(a+c)<=b||(c+b)<=a)
    {
       {
        printf("Impossible");
    }
        
    }
    else
    {
    j=a+b+c;
    n=j/2.0;
    q=sqrt(n*(j*0.5-a)*(n-b)*(n-c));
    printf("L = %.2lf, A = %.2lf",j,q);
    }
        
   return 0;
}

不思考的学习,看似认真,实则傻帽。
2019-09-28 22:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    double x1,y1,x2,y2,x3,y3;
    scanf( "%lf%lf%lf%lf%lf%lf", &x1,&y1,&x2,&y2,&x3,&y3 );

    double L = hypot(x1-x2,y1-y2) + hypot(x2-x3,y2-y3) + hypot(x3-x1,y3-y1);
    double A = (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2.0;
    if( A == 0 )
        puts( "Impossible" );
    else
        printf( "L = %.2f, A = %.2f\n", L, A );
}
2019-09-29 08:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.301946 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved