CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

帮忙看看程序哪里错了? 感激不尽先!

楼主alberto(alberto)2003-11-02 14:12:05 在 C/C++ / C语言 提问

程序如下所示,不知道为什么,程序执行一次进入ran1函数后,就不出来了!  
  明明写了循环十次,希望COUT十个随机数出来,可是一个也没有啊!  
  望各位大虾赐教!感激不尽!  
   
  #include<stdio.h>  
  #include<stdlib.h>  
  #include<math.h>  
  #include<iostream.h>  
   
   
  int   idum;  
   
  double   ran1(int   w);  
   
   
  double   ran1(int   w)  
  {  
  double   r[97],nu;  
    int   m1=259200,m2=134456,m3=243000,  
                                ia1=7141,ia2=8121,ia3=4561,  
                                    ic1=54773,ic2=28411,ic3=51349;  
  double   rm1=0.0000038580247,rm2=0.0000074373773;  
  static   int   iff;  
  static   int   ix1,ix2,ix3;  
  int   j;  
  if(w<0     ||   iff==0   )  
  {  
  iff=1;  
  ix1=(ic1-idum)%m1;  
   
   
   
  ix1=(ia1*ix1+ic1)%m1;  
   
   
  ix2=ix1%m2;  
  ix1=(ia1*ix1+ic1)%m1;  
  ix3=ix1%m3;  
  for(j=1;j<=97;j++)  
  {  
  ix1=(ia1*ix1+ic1)%m1;  
  ix2=(ia2*ix2+ic2)%m2;  
  r[j]=(double(ix1)+double(ix2)*rm2)*rm1;  
  }  
  idum=1;  
   
   
  }  
   
  ix1=(ia1*ix1+ic1)%m1;  
  ix2=(ia2*ix2+ic2)%m2;  
  do  
  {  
  ix3=(ia3*ix3+ic3)%m3;  
          j=1+int((97*ix3)/m3);  
  }while(j>97   ||   j<1);  
   
          nu=r[j];  
   
  r[j]=(double(ix1)+double(ix2)*rm2)*rm1;  
   
  return(nu);  
  }  
   
   
   
   
   
  void   main()  
  {         int   idum=-13;  
            int   i;  
     
  for(i=0;i<10;i++)  
  {        
   
  cout<<ran1(idum)<<endl;  
  }  
  } 问题点数:100、回复次数:7Top

1 楼carbon107(&lt;软件开发思想.h&gt;)回复于 2003-11-02 14:33:32 得分 0

int   m1=259200,m2=134456,m3=243000,  
  //这几个数超过了整型数的范围   -32767----32768Top

2 楼carbon107(&lt;软件开发思想.h&gt;)回复于 2003-11-02 14:42:04 得分 0

double   rm1=0.0000038580247,rm2=0.0000074373773;  
  这个在运算的时候也可能越界了Top

3 楼carbon107(&lt;软件开发思想.h&gt;)回复于 2003-11-02 14:44:03 得分 0

nu=r[j];  
   
  r[j]=(double(ix1)+double(ix2)*rm2)*rm1;  
   
  return(nu);  
  //这个地方nu的值也一定超过了double的界限Top

4 楼zlqian(zlqian)回复于 2003-11-02 14:49:03 得分 0

不要用16位turboc2,  
  用GCC一切都OK  
  This   is   the   result:  
  bash-2.05b$   g++   test.cpp\  
  >  
  bash-2.05b$   g++   test.cpp\  
  >  
  bash-2.05b$   g++   test.cpp  
  bash-2.05b$   ./a  
  0.274272  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  0.865282  
  bash-2.05b$Top

5 楼huigll(会)回复于 2003-11-02 15:12:50 得分 90

double   r[97],  
  for(j=1;j<=97;j++)  
  数组越界!  
  for(j=0;j<97;j++)Top

6 楼leyt(思维机器)回复于 2003-11-02 15:53:11 得分 10

同意Top

7 楼langzi8818(┤天道酬勤┝爱老婆┦┷我是来学习滴┷)回复于 2003-11-02 16:40:26 得分 0

UPTop

相关问题

  • 我第一次运行JAVA程序时出错,请高人指点,小弟将感激不尽
  • 郁闷的小错误!帮我查查错,感激不尽!!
  • 用事务出错,高手帮我呀,感激不尽
  • 哪位有用jmail发邮件的程序,兄弟急用,感激不尽!
  • 那位大哥给小弟一份fastreport程序。小弟感激不尽
  • 有关错误陷阱问题!?请各位高手指教!感激不尽!
  • 怎样在程序运行时将表中的数据加入DROPDOWNLISTBOX控件。感激不尽!!
  • 目前广州市有哪些单位需要招聘PB或JAVA程序员!——感激不尽!
  • 目前广州市有哪些单位需要招聘PB或JAVA程序员!——感激不尽!
  • 求哪位大哥能给我发个cfdisk程序 !感激不尽!(要多少分都给)

关键词

  • ic
  • 程序
  • ix
  • ran
  • ia
  • bash
  • double
  • include

得分解答快速导航

  • 帖主:alberto
  • huigll
  • leyt

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo