| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4461 人关注过本帖
标题:给定三个点的坐标,求三角形面积。不知道哪里错了
只看楼主 加入收藏
海龙独仙
Rank: 2
来 自:江西南昌大学
等 级:论坛游民
帖 子:19
专家分:18
注 册:2012-12-26
结帖率:66.67%
收藏
已结贴  问题点数:8 回复次数:5 
给定三个点的坐标,求三角形面积。不知道哪里错了
#include "stdio.h"
#include"math.h"

float dist(int xa,int ya,int xb,int yb){
    return(float)sqrt(xa-xb)*(xa-xb)+(ya-yb)*(ya-yb);
    }
void main()
{
 float a,b,c,s,t;
 int x1,x2,y1,y2,x3,y3;
 printf("请输入abc的坐标:\n");
 scanf("%d%d%d%d%d%d\n",&x1,&y1,&x2,&y2,&x3,&y3);
 
 a=dist(x1,y1,x2,y2);
 b=dist(x2,y2,x3,y3);
 c=dist(x3,y3,x1,y1);
 
 s=(a=b=c)/2;
 t=(float)sqrt(s*(s-a)*(s-b)*(s-c));
 printf("area=%4.2f\n",t);   
}
利用的公式是面积=√s*(s-a)*(s-b)(s-c)
因为是我自己改编的,不知道哪里错了,请高手指正。谢谢了
搜索更多相关主题的帖子: 三角形 return include 
2012-12-30 16:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
s=(a=b=c)/2;
这是干什么的?

授人以渔,不授人以鱼。
2012-12-30 17:17
海龙独仙
Rank: 2
来 自:江西南昌大学
等 级:论坛游民
帖 子:19
专家分:18
注 册:2012-12-26
收藏
得分:0 
回复 2楼 TonyDeng
额,好吧,这个没注意,但是改正后还是不行啊,输入数值后按回车不能返回结果。

呵呵,新手路过,说错 勿怪
2012-12-30 17:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
不能返回结果是什么意思呢?你可以逐个变量检查的,把a,b,c,s都分别输出来看看,这些都是应该学会自查的。

另外说一下:你这种运算,所有数据在逻辑上都应该是浮点数,坐标也应设成是浮点数,不必要特殊地用整数再加强制转换,代码中出现大量的强制转换语句,就已经表明你的程序设计出现问题了。好的代码是不需要那么多强制转换语句的。

授人以渔,不授人以鱼。
2012-12-30 17:49
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
scanf("%d%d%d%d%d%d\n",&x1,&y1,&x2,&y2,&x3,&y3);
把\n去掉

总有那身价贱的人给作业贴回复完整的代码
2012-12-30 17:53
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <math.h>//这里用尖括号,当然,不能算是错误
float dist(int xa,int ya,int xb,int yb){
    return(float)sqrt( (xa-xb)*(xa-xb)+(ya-yb)*(ya-yb) );
    //sqrt的部分应当括起来
}
void main()
{
    float a,b,c,s,t;
    int x1,x2,y1,y2,x3,y3;
    printf("请输入abc的坐标:\n");
    scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
    //去掉‘\n’

    a=dist(x1,y1,x2,y2);
    b=dist(x2,y2,x3,y3);
    c=dist(x3,y3,x1,y1);

    s=(a+b+c)/2;//这里是‘+’吧
    t=(float)sqrt(s*(s-a)*(s-b)*(s-c));
    printf("area=%4.2f\n",t); 
}


[fly]存在即是合理[/fly]
2012-12-30 18:55
快速回复:给定三个点的坐标,求三角形面积。不知道哪里错了
数据加载中...
 
   



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

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