2
は、私は、次のループを含むFortranのプログラムがあるとします。ループ内の1行で印刷する方法は?
do i=1, 10
print *, i
enddo
これの出力は
私は、次のように、単一の行にこれらの値を書き込むことができますどのように1
2
...
10
のようになります?
1 2 ... 10
は、私は、次のループを含むFortranのプログラムがあるとします。ループ内の1行で印刷する方法は?
do i=1, 10
print *, i
enddo
これの出力は
私は、次のように、単一の行にこれらの値を書き込むことができますどのように1
2
...
10
のようになります?
1 2 ... 10
いくつかの方法がありますが、すぐに頭に浮かぶ2は、以下の小さなプログラム
$ cat loop.f90
Program loop
Implicit None
Integer :: i
Write(*, *) 'First way - non-advancing I/O'
Do i = 1, 10
Write(*, '(i0, 1x)', Advance = 'No') i
End Do
Write(*, *) ! Finish record
Write(*, *) 'Second way - implied do loop'
Write(*, *) (i, i = 1, 10)
End Program loop
$ gfortran -std=f2003 -Wall -Wextra -fcheck=all loop.f90
$ ./a.out
First way - non-advancing I/O
1 2 3 4 5 6 7 8 9 10
Second way - implied do loop
1 2 3 4 5 6 7 8 9 10
$
第一の方法で示されています。ノンアドバンシングI/Oは、書かれているレコードマーカの終わりを抑制します。これは、通常は改行ですが、明示的な書式を必要とします。 2番目の暗黙のdoループは、書式を必要としませんが、柔軟性は低くなります。
英語では通常「ループ」と呼ばれます
ありがとう、それは動作します。 – BogdanSikach
私は最初の方法が一番好きです。コンパイラによっては、2番目の方法で出力を複数の行に分割することがあります。 – Ross