24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1904  |  回复: 9

木棉和我

木虫 (职业作家)

[求助] 求解决:C语言代码能正常编译,但不能计算,为什么?含代码已有1人参与

如题,

两个基本相同的C语言代码,一个能正常运行计算,一个读入定义数组都有问题,但都能正常编译,为什么?

注:
1. 此code2与code1中的区别仅在于后续计算,即在命令注释行‘//以下求出上下界面的velocity’前,两个code没有差异,仅code2中多了一些定义的变量及数组;

2. code1能正常运行,而code2的gdb调试显示与code1中相同的部分都不能正常运行,为什么?且code2中读入文件夹的命令都提示错误,实在无解。

3. 本人因为在学习C语言,gdb调试能力有限,已对code2做了少量调试,并注释了,但对于一些看似正确却提示有问题的,实在不知如何解决,希望大家帮忙运行看一下,给一些指点,谢谢!

4.可能代码写的比较乱,麻烦了。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : code1.c
  • 2019-08-17 08:04:55, 10.24 K
  • 附件 2 : code2.c
  • 2019-08-17 08:05:05, 13.92 K

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

NovaMachine

新虫 (小有名气)

让我们这些拿手机的怎么看

发自小木虫Android客户端
2楼2019-08-17 10:24:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木棉和我

木虫 (职业作家)

引用回帖:
2楼: Originally posted by NovaMachine at 2019-08-17 10:24:50
让我们这些拿手机的怎么看

您好!主要是代码太长了,400多行,难以贴出来,谢谢您!
3楼2019-08-17 12:51:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
木棉和我(月只蓝代发): 金币+20, 感谢指导 2019-08-19 21:01:01
月只蓝: 金币+20, 应助指数+1, 感谢热心指导! 2019-08-19 21:01:19
编译只要语法对就能过,运行要逻辑也正确才行,所以很正常。

话说你的C代码看起来是非常Fortran风格啊,这么多数组都是固定维度大小的。上下行对齐也是乱七八糟不统一,别人看起来很费劲。既然用c了,最好还是按照c的风格和约定俗成来比较好
4楼2019-08-17 23:32:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木棉和我

木虫 (职业作家)

引用回帖:
4楼: Originally posted by sspa9999 at 2019-08-17 23:32:40
编译只要语法对就能过,运行要逻辑也正确才行,所以很正常。

话说你的C代码看起来是非常Fortran风格啊,这么多数组都是固定维度大小的。上下行对齐也是乱七八糟不统一,别人看起来很费劲。既然用c了,最好还是按 ...

谢谢您!果然是大神,一眼看出了问题所在,就是数组太大了,听说动态数组(即采用动态内存)可以解决,正在尝试中。另外,我还需要设置一个double a[20][30000][30000]的三维数组,别人告诉我数组太大,可能采用动态数组内存都不够,大神有什么建议没?

我会尽量按照标准来写,现在还在学习中,再次谢谢!
5楼2019-08-18 06:33:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

数组需要的内存用量可以自己算:sizeof (double)=8 bytes, 8*20*30000*30000=144g bytes. 一般电脑的物理内存很少有这么大,可以加交换空间但比内存慢好几个数量级。更好的办法是分析你的问题,看有没有办法不用这么大的数组,比方说有些地方或者时域上变化不大比较平缓就用大步长或者大网格,这个需要domain knowledge,不是同一领域的人很难给出什么建议

发自小木虫Android客户端
6楼2019-08-19 02:45:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

还有一种是后面的计算只依赖前面计算好的中间结果,不需要所有以前的数据,所以只要存中间结果就可以,这样就不需要保存前面所有的历史数据,也能省内存

发自小木虫Android客户端
7楼2019-08-19 02:50:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
月只蓝: 金币+10, 感谢指导 2019-08-19 21:01:47
引用回帖:
5楼: Originally posted by 木棉和我 at 2019-08-18 06:33:53
谢谢您!果然是大神,一眼看出了问题所在,就是数组太大了,听说动态数组(即采用动态内存)可以解决,正在尝试中。另外,我还需要设置一个double a的三维数组,别人告诉我数组太大,可能采用动态数组内存都不够,大 ...

你需要具体问题具体分析,这么大的数组内存得100多G,你的电脑有没有这么大内存?
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
8楼2019-08-19 17:12:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木棉和我

木虫 (职业作家)

引用回帖:
7楼: Originally posted by sspa9999 at 2019-08-19 02:50:45
还有一种是后面的计算只依赖前面计算好的中间结果,不需要所有以前的数据,所以只要存中间结果就可以,这样就不需要保存前面所有的历史数据,也能省内存

谢谢!我现在好像就是采用的这种方法,采用动态数组,并数组值采用set data与get data的方式。
9楼2019-08-21 23:51:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木棉和我

木虫 (职业作家)

引用回帖:
8楼: Originally posted by libralibra at 2019-08-19 17:12:59
你需要具体问题具体分析,这么大的数组内存得100多G,你的电脑有没有这么大内存?...

没有呢!应该是我代码写的不科学,所以用了这么个数组。我现在忽略一些数据。谢谢您!
10楼2019-08-21 23:52:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 木棉和我 的主题更新
信息提示
请填处理意见