Re: [请益] 没有读取到的资料要计算+输出

楼主: wenni   2013-12-07 22:37:07
如果没有误会意思
应该是你有40笔资料
但是你要有1~102的结果
中间的补0这样
如果是这样 也许可以这样解
开个2个temp array 长度为40
1个为int 1个为real*8 (设为 ND_temp 及 VAL_temp)
再开两个real*8 长度为102 (设为ND 及 VAL, 其实ND不开也行啦XD)
array请自己记得先初始化塞0及0.0D0
先将40笔资料读进array中
以90语法为例可以写成这样
DO I = 1 , 40
READ(104,*) ND_temp(I) , VAL_temp(I)
END DO
然后再将ND ARRAY的排序放入
DO I , 1 , 102
ND(I) = I
END DO
最后再做一次简单的塞值即可
DO I = 1 , 40
VAL( ND_temp(I) ) = VAL_temp(I)
END DO
这样子就会都放进去了
可以得到一个ND array 里面的int是从1~102
然后VAL则是1~20以及83~102有值 其他都是0.0D0
之后就直接利用ND 跟VAL两个array来进行计算及输出即可
希望你看的懂语法
简单来说就是先记住我到底要放进那边
然后再放进去该放的地方就对了XD
如果我误会你想要做的事的话
那就再讨论吧XD
※ 引述《JiGo (ㄐㄍ)》之铭言:
: 主程式有一个输出的问题
: 就是计算出的值如果是0该笔资料就不会输出
: 如下:
: 1 35.00
: 2 35.00
: 3 12.34
: 4 12.34
: 5 3.709
: 6 3.709
: 7 1.028
: 8 1.028: 9 0.2716
: 10 0.2716
: 11 6.9465E-02
: 12 6.9465E-02
: 13 1.7356E-02
: 14 1.7356E-02
: 15 4.2615E-03
: 16 4.2615E-03
: 17 1.0322E-03
: 18 1.0322E-03
: 19 2.4730E-04
: 20 2.4730E-04
: 83 35.00
: 84 35.00
: 85 12.34
: 86 12.34
: 87 3.709
: 88 3.709
: 89 1.028
: 90 1.028
: 91 0.2716
: 92 0.2716
: 93 6.9465E-02
: 94 6.9465E-02
: 95 1.7356E-02
: 96 1.7356E-02
: 97 4.2615E-03
: 98 4.2615E-03
: 99 1.0322E-03
: 100 1.0322E-03
: 101 2.4730E-04
: 102 2.4730E-04
: 其中第21~82的值应该是0所以没有输出
: 102~128的值也是0所以也没输出
: 我现在的程式码计算大致如下:
: DO J=1,128
: 407 CONTINUE
: READ(104,305,ERR=407)ND,VAL
: IF(ND.LT.1 .OR. ND.GT.128) GOTO 407
: U01=VAL
: CJ=U01/FRA
: WRITE(108,306)ND,CJ
: END DO
: 但这这样在输出档中只能看到上述有列出来的资料计算结果
: 21~82 和 102~128 的资料却无法做计算跟输出
: 该怎么让fortran程式码去作判断
: 当没读到ND值的时候让VAL=0呢?
: 简单来说就是想把1~128的值都可以计算并列出来!!
作者: JiGo (ㄐㄍ)   2013-02-11 22:39:00
SORRY我真的对阵列不是很熟悉,我再慢慢摸,先谢谢你了!!
楼主: wenni   2013-02-12 17:55:00
语法的问题只能靠自己了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com