[更新日]1998.05.15


問9 次の Fortran プログラムの説明及びプログラムを読んで, 設問に答えよ。

〔プログラムの説明〕

ある学校で行われた体力測定の走り幅跳びの結果について,記録の良い順に 順位をつけて出力するプログラムである。

(1) 生徒数は 1 〜 100 人である。

(2) 各生徒は走り幅跳びを 6 回行い,そのうちの最良の記録を基にして 順位を決める。プログラムでは,図 1 の例に示す形式の入力データを読み込む ごとに,学籍番号を配列 gakuseki に,最良の記録を配列 kiroku に格納する。 入力データ中の値 0.0 は,ファールを表す。

(学籍番号)             (記録)
  98001    3.80   3.62   4.01   0.0   3.99  0.0
  98002    2.81   2.95   3.01   2.80   2.95  3.10
  98003    0.0    4.62   4.52   4.44   4.71  4.83

           図1 入力データ例

(3) 学籍番号と記録の配列 gakuseki,kiroku の要素を,次のようにして 並べ替える。

(4) 並べ替えた配列 kiroku を基にして順位を求め,配列 jun_i に 格納する。同じ記録であれば,同じ順位にする。図 2 に示す出力例のように, 第 2 位が二人いれば次は第 4 位になる。

順位 学籍番号 記録
 1   98029   5.45
 2   98062   5.29
 2   98091   5.29
 4   98070   5.22
 :   :    :

     図2 出力例

 


〔プログラム〕
   program main
   integer,dimension(100) :: gakuseki,jun_i
   integer :: k,m,n,ninzu,wgakuseki 
   integer,parameter :: no_6 = 6
   real :: kiroku(100),kyori(no_6),wkiroku
   do n = 1,100
      read(*,*,end=10) gakuseki(n),(kyori(k),k=1,no_6)
      kiroku(n) = 
   end do
10 ninzu = 
   do n = 1,ninzu-1
      k = n
      do m = 
         if(kiroku(m) > kiroku(k)) then
            k = m
         endif
      end do
      wkiroku = kiroku(k)
      wgakuseki = gakuseki(k)
      kiroku(k) = kiroku(n)
      gakuseki(k) = gakuseki(n)
      kiroku(n) = wkiroku
      gakuseki(n) = wgakuseki
   end do
   wkiroku = kiroku(1)
   jun_i(1) = 1
   do n = 2,ninzu
      if(wkiroku == kiroku(n)) then
            jun_i(n) = 
         else
            jun_i(n) = n
            wkiroku = kiroku(n)
      endif
   end do
   write(*,*) "順位  学籍番号  記録"
   do n = 1,ninzu
      write(*,'(i5,3x,i5,f10.2)') jun_i(n),gakuseki(n),kiroku(n)
   end do
   end

設問 プログラム中の に入れる正しい答えを,解答群の中から選べ。

 

a に関する解答群

ア maxval(kyori)  イ minval(kyori)  ウ product(kyori)

エ sum(kyori)

 

b に関する解答群

ア n    イ n - 1    ウ n + 1

エ max(n,100)    オ min(n,100)

 

c に関する解答群

ア 1 , n - 1    イ 1 , n    ウ 1 , n + 1

エ n - 1 , ninzu    オ n + 1 , ninzu

 

d に関する解答群

ア n - 1    イ n + 1    ウ jun_i(n) - 1

エ jun_i(n) + 1    オ jun_i(n-1)    カ jun_i(n+1)

 


戻る 次頁:問10