| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 752 人关注过本帖
标题:这个程序哪的错呢,实在找不出(目的可求N组三角形面积)
只看楼主 加入收藏
梦想天奇
Rank: 2
等 级:论坛游民
帖 子:12
专家分:22
注 册:2010-11-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
这个程序哪的错呢,实在找不出(目的可求N组三角形面积)
请高手指点,谢谢啦!
代码如下:
#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

int main()
{
   double a[10000],b[10000],c[10000]; //三角形三边长
   int x1[10000],y1[10000],x2[10000],y2[10000],x3[10000],y3[10000];  //三角形三点坐标
   double p,s;  //s 三角形面积

  double godistance(int x1,int y1,int x2,int y2);

   int n;
   //cin>>n;

  // cout<<"请分别输入三定点的坐标:";
   for (int i=0;i<10000;i++)
   {
     cin>>x1[i]>>y1[i]>>x2[i]>>y2[i]>>x3[i]>>y3[i];
     n++;
     if(((x1[i]==x2[i])&&(y1[i]==y2[i]))||((x1[i]==x3[i])&&(y1[i]==y3[i]))||((x3[i]==x2[i])&&(y3[i]==y2[i]))) break;
     //x1[i]==0)&&(x2[i]==0)&&(x3[i]==0)&&(y1[i]==0)&&(y2[i]==0)&&(y3[i]==0
   }

     for(i=0;i<n-1;i++)
    {
     a[i]=godistance(x1[i],y1[i],x2[i],y2[i]);
     b[i]=godistance(x2[i],y2[i],x3[i],y3[i]);
     c[i]=godistance(x1[i],y1[i],x3[i],y3[i]);

     p=(a[i]+b[i]+c[i])/2;

     s=sqrt(p*(p-a[i])*(p-b[i])*(p-c[i]));

     printf("%0.1f\n",s);
    }

   return 0;
}

double godistance(int x1,int y1,int x2,int y2)
{
    double d;
    d=sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2));
    return d;
}
搜索更多相关主题的帖子: include double 三角形 using 
2011-09-28 18:14
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:4 
以前见过的一个求面积的公式。希望对你有用。
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int x1,y1,x2,y2,x3,y3;
    double s;
    printf("input six integer for three points:\n");
    scanf("%d,%d%d,%d%d,%d",&x1,&y1,&x2,&y2,&x3,&y3);
    s=fabs((x1*y2+x2*y3+x3*y1-x1*y3-x3*y2-x2*y1)/2.0);
    printf("The area of this triangle is %.1lf\n",s);
    return 0;
}



 
2011-09-28 21:03
lkz1987n
Rank: 2
等 级:论坛游民
帖 子:10
专家分:18
注 册:2011-9-8
收藏
得分:4 
程序代码:
for(i=0;i<n-1;i++)
    {
     a[i]=godistance(x1[i],y1[i],x2[i],y2[i]);
     b[i]=godistance(x2[i],y2[i],x3[i],y3[i]);
     c[i]=godistance(x1[i],y1[i],x3[i],y3[i]);

     p=(a[i]+b[i]+c[i])/2;

     s=sqrt(p*(p-a[i])*(p-b[i])*(p-c[i]));

     printf("%0.1f\n",s);
    }

for(int i=0;我看到这里的i没有声明,无法辨识的标识符,要加上int。你上次声明是局部的,到这里使用还要声明下。
2011-09-29 00:25
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:4 
一看就是用vc++ 6.0写的代码

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2011-09-30 01:49
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:4 
你的n没有初始化

偶是菜鸟鸟偶惧WHO?!!!!
2011-09-30 16:13
guilin0822
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:21
专家分:20
注 册:2011-7-28
收藏
得分:4 
double godistance(int x1,int y1,int x2,int y2)
{
    double d;
    d=sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2));
    return d;
}
错了,其中的“d=sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2));”改成“d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));”

另外,此算法可以简化些,目前你这个算法的确能算很多个。但是,你的输入部分要输9999或者要输相同点才结束。这样一来,出结果慢,也不容易找相印结果,同时,如果不是要算9999个,那么就还要在原来的基础上多输一次有相相同点的性况。本人认为,数组也不用定义10000那么大,定义成变量就可以。只不过。在所有程序中加个do……while循环就可以。

[ 本帖最后由 guilin0822 于 2011-10-1 03:16 编辑 ]
2011-10-01 02:48
快速回复:这个程序哪的错呢,实在找不出(目的可求N组三角形面积)
数据加载中...
 
   



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

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