• 締切済み

fortran77でのif文

FORTRAN77の問題の質問です。 授業でこんな問題が出て困ってます。 あるクラスにN人います。 そのクラスの平均身長がXです。 そのN人の中で、X以上の身長の人数Aを印刷するプログラムを作れと言う問題です。 ここで、IF~THENを使いなさい。 分かる人がいたら教えてください。 PROGRAM TEST7 WRITE(*,*)\'x人分の身長データを入力 READ(5,*)x WRITE(*,*)\'身長のボーダーラインを入力\' READ(5,*)G A=A-G B=B-G C=C-G D=D-G E=E-G F=F-G IF(A.GT.0) THEN STOP END 途中までは、こんな感じかと思ったのですが、行き詰ってしまいました。

みんなの回答

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.3

時間が無かったので適当に1文字変数を使用しましたが、意味の分かる変数名を付けるのが正しいやり方です。 適当にやった為に、[人数]と[ボーダーライン以上の人数のカウンタ]の両方にNを使ってしまいました。別の変数を割り当ててください。 ロジックを日本語で説明しますので説明とプログラムが合っているかは自分で確認してください。[名称]を適当な変数に置き換えて考えてください。 10 [人数]を入力する 20 [身長のボーダーライン]を入力する 30 [ボーダーライン以上の人数のカウンタ]を0に初期化 40 [入力した人数のカウンタ]を0に初期化 50 [入力した人数のカウンタ]を+1 60 [身長]を入力 70 IF [身長]≧[身長のボーダーライン] THEN [ボーダーライン以上の人数のカウンタ]を+1 80 IF [入力した人数のカウンタ] < [人数] THEN 60行に戻る 90 [ボーダーライン以上の人数のカウンタ] を出力 100 STOP 110 END

kojiandkoj
質問者

補足

解答ありがとうございます。 早速、やってみた結果が以下のプログラムになりました。 PROGRAM TEST7 WRITE(*,*)'A人分の身長データを入力 READ(5,*)A WRITE(*,*)'身長のボーダーラインBを入力' READ(5,*)B D=0 C=0 10 C=C+1 WRITE(*,*)'各々の身長のデータを入力' READ(5,*)M IF (M.GE.A) THEN D=D+1 IF (C.LT.A) THEN GO TO 10 WRITE(*,*)N STOP END これでも、コンパイルに失敗するのですが、どこが間違っているか 教えて欲しいのですが… *よく、IF文の終わりに、endifを書いてるのを見るのですが  この場合には必要ないのでしょうか?

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

ロジック自体は何言語で書いても変わりませんので適宜修正してください。 1) X以上の身長の人数Aを印刷する  -> 人数が分かればよく、詳細を出せとは書いてない。 2) IF~THENを使えって事ですが  -> 問題レベルからして配列やDO文が使用されるとは思えない 以上を踏まえて次のように解釈しました。 ※ところでFORTRANだよね?変数規約(整数型は宣言しない場合はI~Nで始まる変数)は有効だよね? ※最後に使ったのが…年前だから細かいことは忘れた。 ※チビが寝よう寝ようってうるさいので文法を確認する時間がありません。 PROGRAM TEST7   WRITE(*,*)\'x人分の身長データを入力   READ(5,*)N   WRITE(*,*)\'身長のボーダーラインを入力\'   READ(5,*)L   N=0   I=0 10 I=I+1   READ(5,*)M   IF (M.GE.L) THEN N=N+1   IF (I.LT.N) THEN GOTO 10   WRITE(*,*)N   STOP   END

kojiandkoj
質問者

補足

早速の解答ありがとうございます。 *Fortranで、変数規約は有効です。 このプログラムをコンパイルしたところ出来ませんでした。 ここで、このように変えたのですが PROGRAM TEST7 WRITE(*,*)'N人分の身長データを入力 READ(5,*)N WRITE(*,*)'身長のボーダーラインLを入力' READ(5,*)L N=0 I=0 10 I=I+1 READ(5,*)M IF(M.GE.L) THEN N=N+1 IF(I.LT.N) THEN GOTO 10 WRITE(*,*)N STOP END Nとは人数のことですよね? READ(5,*)M とは、生徒のデータを入れるんえしょうか? IF (I.LT.N) THEN GOTO 10 の文は必要なんでしょうか? すみませんが、よければ教えてもらえると助かります。

  • uen_sap
  • ベストアンサー率16% (67/407)
回答No.1

これが fortran ?? logic が読めない??

kojiandkoj
質問者

補足

すみません。 まだ、習ったばかりでlogicが分かりません。 よければ、問題だけを見て、これを解くプログラムを 教えてくれると助かります。