| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 293 人关注过本帖
标题:求大神帮忙看下这个程序错在那里
只看楼主 加入收藏
zhht87
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2013-8-7
结帖率:57.14%
收藏
已结贴  问题点数:10 回复次数:3 
求大神帮忙看下这个程序错在那里
求大神帮忙看下这个程序错在那里,编译时显示没有问题,可是一运行就提示关闭进程。开始也使用二维数组存储数据,运行正常但是发现当imax 大于40000就不能很好的运行了,老提示关闭进程。后来看帖子说用malloc,但是依然提示关闭进程。求大神帮忙。

#include <time.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define imax 100000

int main()
{
 float stepsize=0.2;
 float mesh=15;
 float gridmovedis=3;
 float Xmax=1057;
 float Ymax=811;
 float *input[imax];
 int x,y,i=0,max;

FILE *out;
out=fopen("E:\\桌面\\2-50gridoutput.txt","w");



for(i=0;i<imax;i++)
    input[i] = (float *)malloc(4*sizeof(float));


for(y=0;y<Ymax;y=y+gridmovedis)
 for(x=0;x<Xmax;x=x+gridmovedis)
 {

 if((Ymax-y>=mesh)&&(Xmax-x>=mesh))
 {(*(input[i]+0))=stepsize*x;
  (*(input[i]+1))=stepsize*y;
  (*(input[i]+2))=stepsize*(x+mesh);
  (*(input[i]+3))=stepsize*(y+mesh);
 i++;}

 else if((Ymax-y>=mesh)&&(Xmax-x<mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(Xmax);
      (*(input[i]+3))=stepsize*(y+mesh);
 i++;}
 else if((Ymax-y<mesh)&&(Xmax-x>=mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(x+mesh);
      (*(input[i]+3))=stepsize*(Ymax);
 i++;}
 else if((Ymax-y<mesh)&&(Xmax-x<mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(Xmax);
      (*(input[i]+3))=stepsize*(Ymax);
 i++;}

}
 

 max=i-1;
for(i=0;i<max;i++)
fprintf(out,"%f %f %f %f\n",(*(input[i]+0)), (*(input[i]+1)), (*(input[i]+2)), (*(input[i]+3)));
 fclose(out);


return 0;

}
搜索更多相关主题的帖子: include 
2014-04-27 18:14
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:5 
编译过了,运行闪退或者有问题,就是逻辑出错了

走向光明的菜鸟学生,励志成为新一代程序猿
2014-04-27 19:13
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:5 
for(i=0;i<imax;i++)
    input[i] = (float *)malloc(4*sizeof(float));
i=0;        //这里的i没有复位!!!!!加上就可以正常运行。
for(y=0;y<Ymax;y=y+gridmovedis)
for(x=0;x<Xmax;x=x+gridmovedis)
{

if((Ymax-y>=mesh)&&(Xmax-x>=mesh))
{(*(input[i]+0))=stepsize*x;
  (*(input[i]+1))=stepsize*y;
  (*(input[i]+2))=stepsize*(x+mesh);
  (*(input[i]+3))=stepsize*(y+mesh);
i++;}

else if((Ymax-y>=mesh)&&(Xmax-x<mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(Xmax);
      (*(input[i]+3))=stepsize*(y+mesh);
i++;}
else if((Ymax-y<mesh)&&(Xmax-x>=mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(x+mesh);
      (*(input[i]+3))=stepsize*(Ymax);
i++;}
else if((Ymax-y<mesh)&&(Xmax-x<mesh))
     {(*(input[i]+0))=stepsize*x;
      (*(input[i]+1))=stepsize*y;
      (*(input[i]+2))=stepsize*(Xmax);
      (*(input[i]+3))=stepsize*(Ymax);
i++;}

}

2014-04-27 19:53
zhht87
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2013-8-7
收藏
得分:0 
回复 3 楼 kwxx
果然是疏忽啊 多谢这位仁兄 我太粗心了
2014-04-27 22:25
快速回复:求大神帮忙看下这个程序错在那里
数据加载中...
 
   



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

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