質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

解決済

1回答

1410閲覧

fortranのif構文

him

総合スコア8

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

0クリップ

投稿2018/01/27 07:37

前提・実現したいこと

gfortranでif構文についての質問です

該当のソースコード

implicit real*8 (a-h, o-z) ! dimension p(1:10,1:10) ! dx =1 dy =1 ! resp = 0.0d0 if ( i <= 5 .and. i >= 3 .and. j <= 5 .and. j >=3 ) then do 190 i = 3,5 do 191 j = 3,5 x = 0 y = 0 P(i,j) =x + y 191 continue 190 continue else do 200 i = 1, 10 do 201 j = 1, 10 P(i,j) = 0 201 continue 200 continue end if ! open ( unit = 1, file = 'paaa-num.dat', status= 'unknown' ) rewind (1) do 600 j = 1, 10 do 700 i = 1, 10 x = dx*float( i - 1 ) y = dy*float( j - 1 ) write(1,*) x, y, p(i,j) 700 continue write(1,*) ' ' 600 continue close (1) ! stop end

質問の詳細

i,jが3~5の範囲ではP(i,j)を0
それ以外ではx+yで表したいのですが、うまく行きません。
全範囲でx+yの結果が出てしまいます。どうすればよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/01/27 08:31

このコードは、あなたが自分で考えて書いたものですか?意味分かってますか?Fortranは知っていますか?
him

2018/01/27 08:44

if~end ifまでを自分で考えました。forotranに関してはほとんど何もわかっていないです・・・。すいません
guest

回答1

0

ベストアンサー

プログラムは意味不明で、何をしたいのかよく分かりません。

i,jが3~5の範囲ではP(i,j)を0 それ以外ではx+yで表したいのですが、

という部分だけに注目すると、

Fortran

1 x = ~~ 2 y = ~~ 3 do 200 i = 1, 10 4 do 201 j = 1, 10 5 P(i,j) = x + y 6 201 continue 7 200 continue 8 do 190 i = 3,5 9 do 191 j = 3,5 10 P(i,j) = 0 11 191 continue 12 190 continue

投稿2018/01/27 11:10

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

him

2018/01/27 11:40

ありがとうございます。 ``` ! step-1 ! ! implicit real*8 (a-h, o-z) ! dimension p(1:10,1:10) ! dx =1 dy =1 x = dx*float( i - 1 ) y = dy*float( j - 1 ) ! do 200 i = 1, 10 do 201 j = 1, 10 P(i,j) = x + y 201 continue 200 continue do 190 i = 3,5 do 191 j = 3,5 P(i,j) = 0 191 continue 190 continue ! open ( unit = 1, file = 'paaa-num.dat', status= 'unknown' ) rewind (1) do 600 j = 1, 10 do 700 i = 1, 10 x = dx*float( i - 1 ) y = dy*float( j - 1 ) write(1,*) x, y, p(i,j) 700 continue write(1,*) ' ' 600 continue close (1) ! stop end ``` と組んでみたのですが、i,j=3~5以外のp(i,j)がすべて-1になってしまいました。 なにがおかしいのでしょうか?
otn

2018/01/27 12:06

紙に、iとかjとかdxとか、変数名を書いてください。pは10x10の表ですね。 プログラムの最初から、文を1つずつ声に出して読み、変数への代入の時に変数名の下に、代入する度に、(消しゴムで消したりして)値を書いてください。ループは当然その回数だけ繰り返します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問