みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FORTRANのプログラミング

FORTRANに関する質問です。
今、実験のデータ解析を行っているのですが、
データの数が多くて困っています。
プログラムで行いたいのは、データが1.txt,2.txt......100.txtとあります。
1.txtなどにはテキスト形式で、
2、4
6、8
・・・・・・・・
などデータが入っています。
これら2×4+6×8・・・・・・・・・・
と計算を行い、それらの結果をout1.txt,out2.txt.............out100.txt
と計算を行いたいのですがどのようにプログラムを組めばいいかよくわかりません。
とくにファイルの入出力に関してです。
ご解答よろしくお願いします。

投稿日時 - 2006-01-20 23:51:05

QNo.1910106

すぐに回答ほしいです

質問者が選んだベストアンサー

多分、ファイルを切り替えて順次処理するのがわからないのだと思いますが

character*10 infile, otfile
integer*4 nfile, nrec
real x,y,sum

do 500 nfile=1,100
write(infile,*) nfile,".txt"
write(otfile,*) "out",nfile,".txt"
open(10,FILE=infile,MODE="read",ERR=510)
open(20,FILE=otfile,MODE="write")
sum=0.
nrec=0
rewind(10) (笑、今はいらないと思う)
write(20,*) "input file :",infile," output file:",otfile
100 read(10,*,end=110) x,y
nrec=nrec+1
write(20,*) "record:",nrec," x=",x," y=",y
sum=sum+x*y
go to 110
110 continue
close(10)
write(20,*) " sum=",sum
close(20)
500 continue
510 continue
stop
end

とこんな感じかな、OPEN文のオプションの処理系での違いや、シンタックスはチェックしてね

write文でfile名を作成するところは
write(infile,"(I,4H.txt)") nfile
write(otfile,"(3Hout,I,4H.txt") nfile
の方が確実かな

あるいはnfileの桁数で分けるか、手許にテスト環境がないのでちょっと自信ない

なお、fileとして5は暗黙で標準入力、6は同様に標準出力なので避けた方が賢明です。

投稿日時 - 2006-01-22 19:23:32

お礼

ありがとうございます。
とりあえず、やってみます。

投稿日時 - 2006-01-24 23:46:38

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

課題だと思うので、直接プログラムは書きません、こんな流れでやってみてください。

・FILEシーケンスでループ
・入出力FILE名を作る、write(string,*) i,".txt"
・そのファイルをオープン
・オープンできなかったら終了、open文のerr=で対応
・和を初期化
・入力ファイルをループで読み、積を和に積算
・終了したら出力
・入出力ファイルをクローズ
・FILE数だけ繰り返す

こんな感じ
ソースか見たいのなら、補足で要求していただければ、月曜以降に

投稿日時 - 2006-01-21 08:42:48

補足

do 200 i=1,6
OPEN(5,FILE="test1.txt")
sum=0
100 READ(5,*,END=110) x,y
WRITE(*,*) x,y
sum=sum+x*y
GO TO 100
110 CONTINUE
CLOSE(5)
write(*,*) 'sum=',sum
200 continue
END
やはりファイルの入出力のやり方がうまくいきません
ご解答よろしくお願いします。

投稿日時 - 2006-01-21 12:25:33

ANo.2

行単位で、
read(*,*) A,B
で読んで、
write(*,*) X
で書けばよいと思います。

投稿日時 - 2006-01-21 04:14:34

ANo.1

なぜFORTRANでやらないとダメなんですか?
CなりPerlなりで書いた方がよっぽど楽な気がしますので、理由が無いならそっちを使った方がいいでしょう

投稿日時 - 2006-01-21 02:33:01

補足

Cとかは知らないのですが、CならFORTRAN
に比べて簡単にできるのですか?

投稿日時 - 2006-01-21 12:28:07

あなたにオススメの質問