• 締切済み

FORTRAN77の問題。

ある直径DPのデータがdiam.datという名前のファイルに保存されている。ファイル中にはDPの測定値が1行に1つ、12けた幅の実数値で書かれている。データの終わりを示すために、最終行には測定値の代わりに-1.0が書かれている。 DPのデータをファイルから読み込み、はいれつDPに格納するとともにデータ数を数える。 というプログラムを書いてください。お願いします。

みんなの回答

  • soaikats
  • ベストアンサー率58% (14/24)
回答No.3

1です。 次の3点について注意して、 ご自身のコードを見直してみてください。 ・DPは配列変数 ・rは配列でない変数 ・カウンタは配列にセットするとき+1する あと少しで完成のようです。 頑張ってください。

  • soaikats
  • ベストアンサー率58% (14/24)
回答No.2

* 読み込んだ値が-1.0になるまでファイルの値を読み続ける   OPEN(UNIT=1,FILE='diam.dat',STATUS='old') 10 READ(1,*)AAA   IF (AAA .NE. -1.0) THEN    (実行したい内容)    GO TO 10   ENDIF   CLOSE(UNIT=1) こんな感じになると思います。 蛇足ですが、READで配列に直接値をセットすると ファイル最終行の"-1.0"も読んでしまうため ・READで一時的に読み込む ・-1.0でなかったら配列にセット としたほうがいいですよ。

endless324
質問者

補足

ありがとうございます。自分なりに考えたのが次ですがどうでしょうか? program kdi third INTEGER I,N real DP,r open(1,file='diam.dat',status='old') N=0 10 N=N+1 read(1,*)r(N) if(r(N).ne.-1.0)then DP(N)=r(N) GO TO 10 ELSE ENDIF close(unit=1)

  • soaikats
  • ベストアンサー率58% (14/24)
回答No.1

大学の課題でしょうか? 丸投げでなく、 「こういうプログラムを組んでみたがうまく動かなかった」 という質問の方がレスがつきやすいですよ。

endless324
質問者

補足

そうですね。自分は10月から習った初心者ですが自分なりに考えて書いたところ program kdi third real DP(1:NMAX),DPMAX,DPMIN INTEGER I,N,NMAX parameter(NMAX=10000) open(1,file='diam.dat',status='old') do 10 I=1,NMAX read(*,*)DP(I) if(DP(I).ne.-1.0)then ここぐらいまで書いて-1があったらどうするのか分からずと待っています。

関連するQ&A