• 締切済み

Fortran;入出力の繰り返し

notnotの回答

  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.4

#2です。 #3さんの回答を読んでもう一度質問文を読み直すと、確かに、「データが100個」でなく「データファイルが100個」という意味のように思えてきましたので、さきの#2の回答は的外れでした。 >1つずつ読み込ませるのはかなり効率悪いので連続して全てを一気に読み込ませるたいのですが、 1つずつ処理するプログラムが出来ているのでしたら、それをサブルーチンにして、ファイル名を変えながら呼び出せばいいと思います。 character infile*20, outfile*20 do i=1,100  if(i.lt.10)then   write(infile,'A,I1') 'data',i   write(outfile,'A,I1') 'result',i  else if(i.lt.100) then   write(infile,'A,I2') 'data',i   write(outfile,'A,I2') 'result',i  else   write(infile,'A,I3') 'data',i   write(outfile,'A,I3') 'result',i  end if  call dataproc(infile,outfile) end do end ファイル名を作るところはもうちょっとスマートにやる手段があるかもしれません。

関連するQ&A

  • fortranで疑問

    今fortranで困ったことがあります。 例えば 1 2 3 と縦に改行されているファイルを、新しいファイルに同じ数値データを写したいとき 元のデータから read(*,*)(n,i=1,3) で値を読み込み write(*,*)(n=i,3) で新しいデータに書き込み出来る と思ったのですが 3 3 3 と新しいファイルに書き込まれてしまうのです。 まず縦に改行した形で表示するにはどうしたら良いでしょうか? ちなみにdo~continue文でプログラムするとうまくいきます。

  • fortran77で複数のファイルの読み込み

    fortran77で複数のファイルの読み込み 現在fortran77のプログラムを勉強しております。 ファイルが複数あり、すべてのファイルを読み込みたいのですが、ファイルの数がたくさんあるため、プログラムの行数が多くなってしまいます。 do ループで次々とファイルを開くプログラムを考えているのですが、思いつきません。 どなたか考え方でもいいので、教えてください。 ちなみに私が考えたプログラムは、 open(10,file='C:\FORTRAN\100.txt',status='old') open(11,file='C:\FORTRAN\121.txt',status='old') open(12,file='C:\FORTRAN\144.txt',status='old') open(13,file='C:\FORTRAN\169.txt',status='old') open(14,file='C:\FORTRAN\196.txt',status='old') open(15,file='C:\FORTRAN\225.txt',status='old') ・・・。 これを do ループで次々に開くことを考えると、 character*3 A(10) do 100 i=1,10 A=i*i open(i,file='C:\FORTRAN\A.txt',status='old') 100 continue ・・・ みたいな感じです。 ' 'の中の一部だけを変えたい場合のcharacter 文の使い方がいまいちよく分かりません。

  • fortranでプログラムを作りたいのですが

    今学校で、txtファイルの数値データを数式処理しているのですが、そのtxtファイル数が多く、一つ一つエクセルで開いてやるのがとても面倒くさくて(エクセルの中ではマクロで処理しているが)困ってます。  そこでfortranでプログラミングして処理しようかと思っているのですが、それに関してわからない事があります 1.fortranのopen文はどんなファイルでも開けるか? 2.またfortranで開いて、計算処理できるファイルはtxt datなどのファイルしかないのか? 3.ファイル名が1~100のように順番になっている時1~100まで順番で開いて、それぞれに計算処理出  来るようなプログラムは可能か?

  • fortran90

    fortran90 現在 fortran90 で計算プログラムを作っております。 プログラムはかけたのですが、実行画面にエラーが出ます。 解決方法が分かりません。どなたか分かる方いらっしゃいますか。 プログラム implicit real*8 (a-h,o-z) parameter(n=900) open (1,file='004.txt',status='old') do 10 i=1,n read (1,*,end=11)xx,yy,zz,ww theta=acos(zz) phi1=acos(xx/sqrt(1-zz*zz)) phi2=asin(yy/sqrt(1-zz*zz)) write(*,*)theta,phi1,phi2 10 continue 11 end プログラム内容 あるフォルダーに保存してあるテキストファイルから4×4行列のデータを読み込み、そのデータからθの値とφ1、φ2のアタを求めるプログラムです。 実行分のエラー画面には、 acos: DOMAIN error です。

  • FORTRANでファイルへの出力

    FORTRAN77で,以下のような出力をしたいのですが,どうしたらいいかわかりません.何かいい案があれば,教えてください. 繰り返し処理の途中で計算を止めても,何ステップまで計算したかを第一行目に出力したいです. ex.)繰返し終値が1000として,456ステップで計算を止めたとき, ----------出力ファイル-------------- 456ステップまで計算されています. (↑何ステップまで計算されたかを   第一行に記入したいです.) step 1,データ step 2,データ : : step 456,データ ----(簡単ですが)考えてたプログラム------- OPEN(10,○) WRITE(10,○)  ←ここを悩んでいます. DO I=1,1000 WRITE(10,○)'step',I,データ CONTINUE

  • fortranでファイルから数値を読み取ることについての質問です。

    fortranでファイルから数値を読み取ることについての質問です。 次のような内容のファイルから数値を読み取る場合: 1 2 3 4 5 6 7 8 9 これはdoループを使って do i=1,n read(1,*)a[3*(i-1)+1],a[3*(i-1)+2],a[3*(i-1)+3] end do として、行数をn=3と指定すれば読み取れますが、 行数を指定しなくてはabortします。 行数を指定せずに、最後のデータまで自動的に読むようにするには どうすれば良いでしょうか?

  • Fortranで1行飛ばして読み込む方法

    例えば次の内容が書かれているテキストファイル(data.txt)があるとします. ------------data.txt------------ time temperature 1.000E+00 5.632E+02 -------------------------------- このdata.txtに書いてある2行目の値をfortranを用いて読み込もうとすしたいのですが, fortranで open(100,file='data.txt') read(100,*) time, temperature と書くと, data.txtの1行目の'time temperature'の文字を読み込もうとし,当然エラーが出てしまいます. 読み込みたいのはdata.txtの2行目の数値のみなのですが, その方法がわかりません. 読み込む方法を教えていただけないでしょうか.

  • fortranのopen文について。

    fortranのopen文のファイル名を指定するするとき、doループで名前を変えたいのですが、どのようにやればよいでしょうか? 具体的には、 do i=1,2 open(unit=10+i,file='file.dat',status='replace') とした時、unitと共にファイル名も'file1.dat'、'file2.dat'と変わるようにしたいのです。 よろしくお願いします。

  • fortran:includeできないとエラーがでます

    unix上にtelnetしてプログラムをつくっているのですが、fortranのプログラム中でinclude文を実行するとコンパイル時に Cannot open include file ’ヘッダーファイル名’ と出ます。 読み込むヘッダーファイルは市販のものをインストールしたものでこのファイルは/usr/includeにシンボリックリンクの形で存在しリンク先も存在します。ちなみにヘッダーファイル名を実在しないものにしても同じエラーメッセージが出ます。 なにが原因なのでしょうか。お心当たりのある方はよろしくお願いいたします。

  • fortran90のerrorについての質問です。

    ある数値計算の数値結果をvtk形式のファイルに出力する プログラムを作ったのですが、以下のエラーが出ました。 Time increment = 2.8344347688340866E-002 [s] Step No. = 1 At line 217 of file test1.f90 (unit = 1) Fortran runtime error: Cannot open file 'result***.vtk': Invalid argument Error termination. Backtrace: Could not print backtrace: libbacktrace could not find executable to open #0 0xffffffff #1 0xffffffff #2 0xffffffff #3 0xffffffff #4 0xffffffff #5 0xffffffff #6 0xffffffff #7 0xffffffff #8 0xffffffff #9 0xffffffff #10 0xffffffff #11 0xffffffff #12 0xfffffff 不思議なことに、別のパソコンで同じプログラムを実行したところエラーは出ず、数値結果ファイルも出力されました。 このエラーは何なのでしょうか。また直し方はどうすればよいでしょうか。 困ってます。教えてください。