在循环语句中分别计算上千次,需要将数据输出到文本文...
请问大神们,怎样把计算数据直接输出到文本或指定文件。看书,文件操作部分。
program test
open(10,file='out.txt')
do i=1,n
write(10,*) i
end do
close(10)
end program li913 发表于 2019-11-9 15:43
看书,文件操作部分。
program test
open(10,file='out.txt')
前辈你好,如果将你所回答的输出为文件的代码正确加入具体程序在怎么加,下面是我具体程序;如能帮助,大恩大德,没齿难忘。
IMPLICIT NONE
REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
REAL*8 ETA1,ETA2,C11,C12,C21,C22
REAL*8 LAM,D,PI,C,OME
REAL*8 K1,K2
REAL*8 R,T,A
COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
PARAMETER(PI=3.14159D0)
PARAMETER(C=3.99792D8)
N1=1.00D0
N2=1.50D0
MU1=1.00D0
MU2=1.00D0
i=(0,1)
EPS1=(N1)**2
EPS2=(N2)**2
ETA1=DSQRT(EPS1/MU1)*N1
ETA2=DSQRT(EPS2/MU2)*N2
C11=(ETA1+ETA2)/(2*ETA1)
C12=(ETA1-ETA2)/(2*ETA1)
C21=(ETA1-ETA2)/(2*ETA1)
C22=(ETA1+ETA2)/(2*ETA1)
LAM=3.00D-7
DO LAM = 3.00D-7,12.00D-7,0.01D-7
D=2.00D-7
OME=2*PI*C/LAM
K1=(OME*N1)/C
K2=(OME*N2)/C
B11=CDEXP(i*K1*D)*DEXP(-K2*D)
B12=(0,0)
B21=(0,0)
B22=CDEXP(-i*K1*D)*DEXP(K2*D)
T11=C11*B11+C12*B21
T12=C11*B12+C12*B22
T21=C21*B11+C22*B21
T22=C21*B12+C22*B22
R=(CDABS(-T12/T22))**2
T=(CDABS(T11-(T12*T21)/T22))**2
A=1-R-T
WRITE(*,100)R,T,A
100 FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
END DO
WRITE(*,*)'FINISH'
END li913 发表于 2019-11-9 15:43
看书,文件操作部分。
program test
open(10,file='out.txt')
我是FORTRAN77,书上的我看了试不成功。
注意 !/////======= 注释的行
IMPLICIT NONE
REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
REAL*8 ETA1,ETA2,C11,C12,C21,C22
REAL*8 LAM,D,PI,C,OME
REAL*8 K1,K2
REAL*8 R,T,A
COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
PARAMETER(PI=3.14159D0)
PARAMETER(C=3.99792D8)
N1=1.00D0
N2=1.50D0
MU1=1.00D0
MU2=1.00D0
i=(0,1)
EPS1=(N1)**2
EPS2=(N2)**2
ETA1=DSQRT(EPS1/MU1)*N1
ETA2=DSQRT(EPS2/MU2)*N2
C11=(ETA1+ETA2)/(2*ETA1)
C12=(ETA1-ETA2)/(2*ETA1)
C21=(ETA1-ETA2)/(2*ETA1)
C22=(ETA1+ETA2)/(2*ETA1)
LAM=3.00D-7
open(12,file='out.txt')!/////=======
DO LAM = 3.00D-7,12.00D-7,0.01D-7
D=2.00D-7
OME=2*PI*C/LAM
K1=(OME*N1)/C
K2=(OME*N2)/C
B11=CDEXP(i*K1*D)*DEXP(-K2*D)
B12=(0,0)
B21=(0,0)
B22=CDEXP(-i*K1*D)*DEXP(K2*D)
T11=C11*B11+C12*B21
T12=C11*B12+C12*B22
T21=C21*B11+C22*B21
T22=C21*B12+C22*B22
R=(CDABS(-T12/T22))**2
T=(CDABS(T11-(T12*T21)/T22))**2
A=1-R-T
WRITE(12,100)R,T,A !/////=======
100 FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
END DO
close(12) !/////=======
WRITE(*,*)'FINISH'
END fcode 发表于 2019-11-10 10:35
注意 !/////======= 注释的行
IMPLICIT NONE
REAL*8 N1,N2,MU1,MU2,EP ...
感谢前辈。我改试了,加了一行在屏幕输出,发现屏幕输出结果与输出文本中的数据不一致(一共输出三列数据,第一列R一样,到第二三列的T,A不一样)这是什么原因,怎么修改?
给出你修改后的代码 fcode 发表于 2019-11-10 13:06
给出你修改后的代码
就加了一行屏幕输出,屏幕输出和文本居然不一样
IMPLICIT NONE
REAL*8 N1,N2,MU1,MU2,EPS1,EPS2
REAL*8 ETA1,ETA2,C11,C12,C21,C22
REAL*8 LAM,D,PI,C,OME
REAL*8 K1,K2
REAL*8 R,T,A
COMPLEX*16 i,B11,B12,B21,B22,T11,T12,T21,T22
PARAMETER(PI=3.14159D0)
PARAMETER(C=3.99792D8)
N1=1.00D0
N2=1.50D0
MU1=1.00D0
MU2=1.00D0
i=(0,1)
EPS1=(N1)**2
EPS2=(N2)**2
ETA1=DSQRT(EPS1/MU1)*N1
ETA2=DSQRT(EPS2/MU2)*N2
C11=(ETA1+ETA2)/(2*ETA1)
C12=(ETA1-ETA2)/(2*ETA1)
C21=(ETA1-ETA2)/(2*ETA1)
C22=(ETA1+ETA2)/(2*ETA1)
LAM=3.00D-7
OPEN(12,FILE='out.txt')
DO LAM = 3.00D-7,12.00D-7,0.01D-7
D=2.00D-7
OME=2*PI*C/LAM
K1=(OME*N1)/C
K2=(OME*N2)/C
B11=CDEXP(i*K1*D)*DEXP(-K2*D)
B12=(0,0)
B21=(0,0)
B22=CDEXP(-i*K1*D)*DEXP(K2*D)
T11=C11*B11+C12*B21
T12=C11*B12+C12*B22
T21=C21*B11+C22*B21
T22=C21*B12+C22*B22
R=(CDABS(-T12/T22))**2
T=(CDABS(T11-(T12*T21)/T22))**2
A=1-R-T
WRITE(*,100)R,T,A
WRITE(12,100)R,T,A
100 FORMAT(1X,F8.3,2X,F8.3,2X,F8.3)
END DO
CLOSE(12)
WRITE(*,*)'FINISH'
END 我试了一下,是一样的。
如果你的不一样,可否告知你的屏幕输出和文件输出分别是什么?
(以最后十行为例)
在我这里,最后十行内容为:
0.148 0.081 0.771
0.148 0.081 0.771
0.148 0.081 0.771
0.148 0.081 0.771
0.148 0.082 0.771
0.148 0.082 0.770
0.148 0.082 0.770
0.148 0.082 0.770
0.148 0.082 0.770
0.148 0.083 0.769
fcode 发表于 2019-11-10 17:15
我试了一下,是一样的。
如果你的不一样,可否告知你的屏幕输出和文件输出分别是什么?
(以最后十行为例) ...
后面部分的确是相同的,但是开始部分不一样
屏幕上是
0.148 0.0290.823
文本是
0.148 0.0000.852
页:
[1]
2