• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Fortranのプログラミングについて)

Fortranのプログラミングについて

このQ&Aのポイント
  • Fortranのプログラミングについて質問させていただきます
  • 順位と値のデータがあり、値が同じ場合に順位を平均したものを割り振りたいです
  • プログラムを組み立てる方法が分かりません。教えてください

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

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

## fortranとはまた懐かしい。 ## 私は、Fortran80~Fortran77くらいの頃しかさわっていないので ## 文法がもうあやふやなので、主として方針だけ。 まず、Tをすべて読み込んで配列Tに格納します。 次に、Rをすべて読み込んで配列Rに格納します。 配列Tを2番目から順番に処理していきます。(1番目は比較対象になるだけ) integer i integer j integer wk integer totalR wk = 1 do i = 2,30 if (配列T(i).NE. 配列T(i - 1)) then * 値が一致していない時、その直前までを平均する。 * 注:wkからi-1までの配列が同じ値となっている。 totalR = 0 do j = wk,i-1 totalR = totalR + R(j) end do j do j = wk,i-1 R(j) = totalR / (i - 1 - wk + 1) end do j wk = i end if end do i * 途中から最後まで等しかったときに平均処理がされないので totalR = 0 do j = wk,30 totalR = totalR + R(j) end do j do j = wk,30 R(j) = totalR / (i - 1 - wk + 1) end do j 後は、配列Rと配列Tを出力する。 とこんな感じ。 ## Fortran80ではブロックIF文ってなかったなあ~。 ## Do loopもこんな書き方できるのか、といいつつ。 (文法は以下のサイトを参考にしています。) http://www-het.ph.tsukuba.ac.jp/~ishizuka/Link/F90/sec0.html

gelgel0965
質問者

お礼

 機器の不具合で返信ができず、遅くなりました。 素人の私でも分かりやすいプログラム内容で大変ありがたいです。 自分でも一応は書いてみたのですが、こちらのほうが数倍スマートでしたので 教えていただいた方法で行いたいと思います。 プログラムにもセンスが求められるんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

こんなのとか。 http://www.ideone.com/H48Ol

gelgel0965
質問者

お礼

回答していただきました事、感謝いたします。 はやくに回答していただいたのですが、自分にも流れが追いやすい方を 選ばせていただきました。 すみません。

すると、全ての回答が全文表示されます。

関連するQ&A