| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:运算问题
只看楼主 加入收藏
枪手问鼎英超
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2011-6-1
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:6 
运算问题
请问大家一下
     我做一个复杂运算的时候,做一千次的循环运算可以轻松的运算出结果,为什么做一万次的循环时候就出现这样的情这是
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-09-02 13:20
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:5 
这回不会杯具了,哈哈
恭喜你中奖了!!
你的程序代码是有版权的吗?没有程序代码,别人怎么知道你的问题出在哪里了
只能告诉你 ,你的程序访问了不该访问的地方
2011-09-02 13:47
枪手问鼎英超
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2011-6-1
收藏
得分:0 
回复 2楼 Luminal
因该不会的吧!!为什么运行一千次就可以,运行一万次就不可以了?我只想问这个的啊!
2011-09-02 14:09
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
回复 3楼 枪手问鼎英超
也许运行1万次没事,可能100万次才出现问题,应该是有溢出的可能存在,所以,不看你的代码,没法说是怎么回事
2011-09-02 14:19
枪手问鼎英超
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2011-6-1
收藏
得分:0 
回复 4楼 Luminal
程序代码:
#include<stdio.h>
#include<math.h>
void main()
{int shenfenma[8],zhiluanma[8],c[32],yihuoma[32],fangweima[8];

 int i,j,k,w;

 int e,f,g,u,v,q;

 double b;

 int r;

 r=0;

 double x1[33],y1[33];

 int x2[33],y2[33];

 double z=0,h;

 double suiji[8],paixu[8];

 double x[8],y[8];

 int a[12]={1,1,0,3,2,4,0,1,g,u,v,q};

 {
         for(g=0;g<10;g++)
             for(u=0;u<10;u++)
                 for(v=0;v<10;v++)
                     for(q=0;q<10;q++)
                     { w=a[0]*10+a[1]+a[2]*10+a[3]+a[4]*10+a[5];
                       shenfenma[0]=int(w/10);
                       shenfenma[1]=w%10;
                       for(i=0;i<6;i++)
                       {
                         shenfenma[i+2]=a[i+6];
                       }
                       x[0]=0.5211;y[0]=0.5456;
                       for(i=0;i<7;i++)
                       {
                        x[i+1]=4*x[i]*(1-x[i]);
                        y[i+1]=4*y[i]*(1-y[i]);
                       }
                       for(i=0;i<8;i++)
                       {
                       suiji[i]=x[i]+y[i];
                       }
                       for(i=0;i<8;i++)
                       {
                         paixu[i]=suiji[i];
                       }
                       for(j=0;j<8;j++)
                       {
                         for(i=0;i<j;i++)
                         {
                           if (paixu[j]<paixu[i])
                           {
                              b=paixu[j];paixu[j]=paixu[i];paixu[i]=b;
                           }
                         }
                       }
                       for(i=0;i<8;i++)
                       {
                         for(j=0;j<8;j++)
                         {
                           if (paixu[i]==suiji[j])
                           {
                             zhiluanma[i]=shenfenma[j];
                           }
                         }
                       }
                        for(i = 0; i < 8; i++)
                        {
                            k = 3;
                            for(j = 0; j < 4; j++)
                            {
                               c[i * 4 + j] = (zhiluanma[i] >> k--) & 1;
                            }
                        }
                        for(i = 0; i < 32; i++)
                        {
                           if(i != 0 && i % 4 == 0)
                           {
                              puts("");
                           }
                        }
                         x1[0]=0.61;y1[0]=0.21;
                         for(i=0;i<32;i++)
                         {
                               x1[i+1]=-1.4*pow(x1[i],2)+y1[i]+1;
                               y1[i+1]=0.3*x1[i];
                         }
                          for(i=0;i<32;i++)
                          {if(x1[i]>0.4)
                               x2[i]=1;
                           else x2[i]=0;
                          }
                       
                         for(i=0;i<32;i++)
                         {yihuoma[i]=((x2[i])^c[i]);
                         }
                           for(i=0;i<8;i++)
                           {fangweima[i]=yihuoma[4*i]*8+yihuoma[4*i+1]*4+yihuoma[4*i+2]*2+yihuoma[4*i+3];
                            }
                     }

 }
                           for(i=0;i<10000;i++)
                               for(j=0;j<9999;j++)
                               { if(fangweima[i]==fangweima[j])
                                       r++;
                                  else break;
                               }
                    
                    

                 printf("%d",r);
                        
}
程序是这样的,你帮忙看看吧!!
2011-09-02 14:26
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:5 
int shenfenma[8],zhiluanma[8],c[32],yihuoma[32],fangweima[8];
fangweima安全范围 fangweima[0]---fangweima[7];共8个int型值
编译器为其分配的空间大小为 8*sizeof(int);
 for(i=0;i<10000;i++)
     for(j=0;j<9999;j++)
      { if(fangweima[i]==fangweima[j])
           r++;
         else break;
       }
你自己可以想想 fangweima[8]---fangweima[9999]是指向哪里的内存空间,不报错,不是因为你程序没错
只是哪段内存是可读的,系统允许程序去读它,报错,是程序读到了系统所不允许的内存空间了,
所以我说,也许1万次循环还不会报错,但不等于程序没有问题
在我的电脑中4000次就报错了,哈哈,你程序其他地方我没看,.所以不知道还有没有其他问题,仅就楼主的提问
来回答的

[ 本帖最后由 Luminal 于 2011-9-2 14:45 编辑 ]
2011-09-02 14:41
枪手问鼎英超
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2011-6-1
收藏
得分:0 
回复 6楼 Luminal
你讲得有道理,麻烦你帮我看看,应该怎么样该一下?不甚感激
2011-09-02 14:53
快速回复:运算问题
数据加载中...
 
   



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

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