![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Fortran90に関する問題です。
「正の整数mを正の整数nで割った余りrを求める手順を、組み込み関数MOD(m,n)を用いずに、単一の算術式で表せ」
このプログラム文を以下のように作成しました。ファイル名は「amari.f90」にしました。
INTEGER::m,n,f,r
REAL::a,k
PRINT*,'Input 正の整数'
READ*,m,n
a=REAL(m)
k=a/n
f=INT(k)
IF(m>0,n>0) THEN
r=m-(f*n)
PRINT*,'余り=',r
END IF
END
そして、Cygwin画面上で
gfortran -o amari.exe amari.f90と打って、コンパイルしようとしたら以下のようなエラー文が出ました。
amari.f90:8.6:
IF(m>0,n>0) THEN
1
Error: Syntax error in IF-expression at (1)
amari.f90:11.3:
END IF
1
Error: Expecting END PROGRAM statement at (1)
プログラム文のどこの箇所が間違っているのかを教えていただけませんか?お願いします。
No.1ベストアンサー
- 回答日時:
FORTRAN77で終わってしまったものなので、FORTRAN90仁対しては不正確な知識で回答しますが
IF(m>0,n>0) THEN
この文、比較式の結合条件がわかりませんね、m>0かつn>0なのか、m>0またはn>0んのかコンパイラは判断できません。
普通は、if(m>0 .and. n>0)など、論理演算子を使って条件式を結合するように書きます。
ところで、このプログラム、ちゃんと動きませんよ、nに0がセットされたら、k=a/nで除算例外が発生します。
それに、わざわざrealに変換する意味が不明(というより不要)です。すべて、整数の演算で処理すればいいはずです。
言われたとおりに以下のように訂正したら、上手くいきました。
ありがとうございました。
INTEGER::m,n,k,r
PRINT*,'Input 正の整数'
READ*,m,n
k=m/n
IF(m>0.AND.n>0) THEN
r=m-(k*n)
PRINT*,'余り=',r
END IF
END
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php エラー 2 2022/10/23 16:43
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICのプログラムでsrandを使う...
-
JCLの基本について教えてください
-
【JAVA】数字をひし形に出力す...
-
変数の値が勝手に変化する原因
-
3つの整数のうち奇数のみを表示...
-
Javaの配列プログラムについて
-
Tiny Basicのプログラムで。。
-
LEDイルミの点滅プログラムを教...
-
Segmentation fault
-
プログラミングの課題で1万円か...
-
scheme でのスコープについて
-
無限ループとループ文
-
ループのとめ方
-
Visual C++ 2005 のプログラム...
-
basicで書いた測量プログラムが...
-
360度を超える角度
-
CPUが16bitでも32bitOSでコンパ...
-
65536は2の何乗なのでしょうか?
-
0除算して、落ちるプログラムと...
-
あるプログラムのコマンドライ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【JAVA】数字をひし形に出力す...
-
プログラミング
-
ruby
-
変数の値が勝手に変化する原因
-
JCLの基本について教えてください
-
Fortran90についての質問です。
-
fortran if文
-
3つの整数のうち奇数のみを表示...
-
Sublime Text 3でのFortranプロ...
-
Matlabについて質問2
-
ProC 固定SQLでNULLってどう表...
-
COBOLのピリオド
-
360度を超える角度
-
main関数終了時のreturnの意味は?
-
Visual Basic 三辺の長さ? ...
-
c言語です
-
C言語 バッファについて。
-
c言語のプログラミング 2つの整...
-
_dupenv_s関数でメモリリーク
-
N88basicを用いたGPIB制御
おすすめ情報