実数値データを読み込んで、最大値、最小値およびそのデータ番号を表示するプログラム

とりあえず、今日の授業で出された課題。
授業方針により、FORTRAN77 と Fortran90 が混在していることや、FORMAT文を使っていないこと、処理方法が適切でないのは仕様です。

C------------------------------------------------------------------------------
C 1212_02.for | 2007年12月12日  課題2
C------------------------------------------------------------------------------
C 課題2
C 
C キーボードから実数値のデータを読み込み、最大値、最小値とそれらのデータ番号を
C 表示するプログラムを作りなさい。
C なお、同じ値が入力された場合の処理や、入力および出力のフォーマットは考慮しな
C くてよい。
C------------------------------------------------------------------------------

C---+----1----+----2----+
      IMPLICIT NONE
      
      INTEGER I, N, MAXBUF, MINBUF
      REAL DMAX, DMIN, DAT
      
      WRITE(*,*) '個数を入力'
      READ(*,*) N
      
C  *  N が 1 以下の場合は処理を終了する *
      IF( N .LE. 1 ) STOP
      
      WRITE(*,*) N, '個のデータを入力してください'
      READ(*,*) DAT
      
C  *  DMAX と DMIN に DAT の値を代入して仮の最大・最小値として初期化する  *
      DMAX = DAT
      DMIN = DAT
C  *  最大、最小値になったときのデータの番号を仮に 1 として初期化する  *
      MAXBUF = 1
      MINBUF = 1
      
      
      DO I = 2, N
          
          READ(*,*) DAT
          
C  *  DAT が DMAX より大きい場合、DMAX の値と MAXBUF の値を更新  *
          IF( DAT .GT. DMAX ) THEN
              
              DMAX = DAT
              MAXBUF = I
              
C  *  DAT が DMIN より小さい場合、DMIN の値と MINBUF の値を更新  *
          ELSEIF( DAT .LT. DMIN ) THEN
              
              DMIN = DAT
              MINBUF = I
              
          ENDIF
      
      ENDDO
      
      WRITE(*,*) MAXBUF, '番目の', DMAX, ' が最大値'
      WRITE(*,*) MINBUF, '番目の', DMIN, ' が最小値'
      
      STOP
      END

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中