首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能告诉小弟我这个程序错在哪

2012-02-19 
谁能告诉我这个程序错在哪?#include iostream.h#include math.hvoidmain(){intu0longintsum0intss

谁能告诉我这个程序错在哪?
#include <iostream.h>
#include <math.h>
void   main()
{
    int   u=0;
    long   int   sum=0;
    int   ss[100000]={0};
    int   lac,lab,lbc,p,s;
    for(int   j=0;j <=18;j++){
            for(int   i=0;i <=18;i++){
                    for(int   w=0;w <=18;w++){
                            for(int   q=0;q <=18;q++){
                  for(int   r=0;r <=18;r++){
        for(int   e=0;e <=18;e++){
                                                    lac=sqrt((i-e)*(i-e)+(j-r)*(j-r));
                lab=sqrt((i-q)*(i-q)+(j-w)*(j-w));
                lac=sqrt((q-e)*(q-e)+(w-r)*(w-r));
                p=(lac+lab+lbc)/2;
                s=sqrt(p*(p-lac)*(p-lab)*(p-lbc));
                                  if(lac+lab> lbc){
                if(s!=0){
                      ss[u]=s;
    u++;
}
}
        }
                  }
                            }
}
          }
    }
    for(int   k=0;ss[k]!=0;k++)sum++;
    int   fi,se,m;
    long   int   sum1=0;
    for(fi=0;fi <sum-1;fi++){
            m=fi;
            for(se=fi+1;se <sum;se++){
            if(ss[se]==ss[m])
            sum1++;
            }
}
        cout < <sum-sum1 < <endl;
}
是想编已知三角形的三个顶点坐标都在0到18范围内
问能组成面积不同的三角形多少个

[解决办法]
在你的计算中,
使用的都是 int,
而事实上,
可能面积相差的是0.几, 或者更小,
所以,
应当对某些变量使用 float,有必要的话使用 double 类型计量。
[解决办法]
...
float lac,lab,lbc,p,s; //改成 float 数据类型
for(int j=0;j <=18;j++){
for(int i=0;i <=18;i++){
for(int w=0;w <=18;w++){
for(int q=0;q <=18;q++){
for(int r=0;r <=18;r++){
for(int e=0;e <=18;e++){
lac=sqrt(float((i-e)*(i-e)+(j-r)*(j-r))); //sqrt 参数没有 int 版本的,调用歧义
lab=sqrt(float((i-q)*(i-q)+(j-w)*(j-w))); //强制转化参数类型,显示调用 float 版本
lac=sqrt(float((q-e)*(q-e)+(w-r)*(w-r))); //的sqrt 函数
...
[解决办法]
晕,好多for啊,是不是输入的时候输入了实数?
我没看到你程序中有float or double型的变量
------解决方案--------------------


sqrt开方很大可能是小数,int型时数据不准确。
[解决办法]
应当对某些变量使用 float,有必要的话使用 double 类型计量。
======================================================================

基本上不要使用float,遇到浮点运算全部使用double就对了。

热点排行