Fortran Coder

查看: 18842|回复: 10
打印 上一主题 下一主题

[流程控制] 关于程序不进入循环的问题

[复制链接]

239

帖子

0

主题

0

精华

版主

World Analyser

F 币
646 元
贡献
472 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
楼主
发表于 2017-10-24 08:51:42 | 显示全部楼层
本帖最后由 kyra 于 2017-10-24 08:52 编辑

昨天我就忍着你,发代码截图干嘛?
第一,别人不能复制粘贴,想帮你调试代码,就得照着图片重新打一遍代码。试问几个人有这耐心?
第二,浪费论坛资源,浪费浏览者的流量。
第三,自己还麻烦。

为啥不直接复制粘贴呢?
最后,给你介绍一个很好的检查错误方法,叫单步调试:
http://v.fcode.cn/video-debugger.html
http://debug.w.fcode.cn

239

帖子

0

主题

0

精华

版主

World Analyser

F 币
646 元
贡献
472 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
沙发
发表于 2017-10-24 11:12:41 | 显示全部楼层
本帖最后由 kyra 于 2017-10-24 11:16 编辑

你试试对

        REAL::T(16,12)
        REAL::TA(16,12)
        REAL::ET(16,12)


这三个数组进行初始化

也就是

        REAL::T(16,12)  = 0
        REAL::TA(16,12)= 0
        REAL::ET(16,12)= 0


此外,你可以学习一下数组整体操作和数组片段,可以省很多代码,例如
DO N=1,7
    T(6,N)=T1
END DO

可以简写为
T(6,1:7) = T1

再例如
DO M=2,5
  DO N=1,11
      T(M,N)=10
  END DO
END DO

可以简写为
T(2:5,1:11) = 10



DO M=1,16
    DO N=1,12
        ET(M,N)=ABS(TA(M,N)-T(M,N))
    END DO
END DO

则可以简写为
ET = abs( TA - T )

239

帖子

0

主题

0

精华

版主

World Analyser

F 币
646 元
贡献
472 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
板凳
发表于 2017-10-24 12:26:55 | 显示全部楼层
你用的什么编译器?这是我修改后的输出。(我没仔细看对不对,反正有变化了)

QQ截图20171024122620.png (27.14 KB, 下载次数: 340)

QQ截图20171024122620.png

239

帖子

0

主题

0

精华

版主

World Analyser

F 币
646 元
贡献
472 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
地板
发表于 2017-10-24 14:12:35 | 显示全部楼层
我用的gfortran,想起来了,你的 err 是不是也没初始化?

239

帖子

0

主题

0

精华

版主

World Analyser

F 币
646 元
贡献
472 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
5#
发表于 2017-10-24 14:44:34 | 显示全部楼层
err 不能初始化为0呀,不然肯定不进入循环。
第一次判断就没有误差了,就不需要进入循环计算了。

REAL::ERR=999.0 试试
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-7 16:27

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表