FORTRAN95でハフモデルの計算をしようと思っています。
ハフモデルをちょっと拡張して計算を行いたく、なかなかプログラムを組めていません。
一番苦戦しているのが、配列に数字を入れる方法です。
縦5、横9からなる配列Bを定義して、(Bの左上の要素はB11とします)
1列目の2~5行目に1~4の数字を入れ,
1行目の2列目から後ろには1~9を入れて、Bを表示したいです。
ほかの要素は実数なのでBは実数型で定義します。
Bの完成イメージとしては
0 1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0
です。スペース部分はコンマですが。
プログラムを
REAL,DIMENSION(5,9)::B
B=0
DO I4=1,4
B(2:5,1)=I4
DO IXW=10,80,10
XWEI=REAL(IXW)/10.0
B(1,2:9)=XWEI
END DO
END DO
DO I5=1,5
WRITE(*,100) (B(I5,J5),J5=1,9)
100 FORMAT(20(',',F3.1))
END DO
STOP
END
こうかくと、
,0.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,
,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
のように表示されます。DO文の対になるEND DOよりしたではDOの最後の値しか使えないようです。
しかし、WRITE文をEND DOより中に入れると5×9ではなくもっと縦長の15×9のような配列が表示されてしまいます。
どなたか教えてください。お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「なぜそうなるのか」は自分できちんと調べてくださいとうち捨ててっと.
Fortran95 だったら, わざわざ do をこんな風に使わなくてもいいじゃないの?
B = 0
B(2:5, 1) = (/ (i, i=1, 4) /)
B(1, 2:9) = (/ (i, i=1, 8) /)
なり
B = 0
forall(i=2:5) B(i, 1) = i-1
forall(i=2:9) B(1, i) = i-1
なりで終わってると思う. ああ, サイズが間違ってないか?
この回答への補足
回答ありがとうございます。
シンプルに書く事ができました。
なぜDOを使ったかは、FORTRAN77の資料が多かったためです。便利な方法を知りませんでした。
次に横方向を0.5,1.0,1.5,と実数にしたいのですが、どうしたら良いのでしょうか?
よろしくお願いします。
No.2
- 回答日時:
人に聞くだけじゃなくって, 自分で考えるとか自力で調べるとかしてください.
少なくとも, forall を使う方は想像できるでしょ?
もう一方も「なぜ i が 2回出てくるのか」を考えればそれなりに思い付くんではないかな.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
エクセルで最小値から0を除く方法
-
配列変数の添字が範囲外ですと...
-
for each の現在の配列ポインタ...
-
特定のセル範囲で4文字以上入力...
-
ListViewで、非表示列って作れ...
-
VLOOKUP関数で、一番下...
-
えfor文とか使っちゃう時点で時...
-
配列を任意の数値で埋める方法
-
《エクセル2000》A列・B列の商...
-
VBAで多次元配列のインデックス...
-
【VBA】配列とWorksheetFunctio...
-
VBA 1次元配列を2次元に追加する
-
fortranでのcsvファイルの読み込み
-
VB2008: CSV を二次元配列に読...
-
subの配列引数をoptionalで使う...
-
Excel2003 条件付き中央値
-
FORTRANのCOMMON文
-
ArrayListの初期値に二次元配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
ListViewで、非表示列って作れ...
-
for each の現在の配列ポインタ...
-
配列変数の添字が範囲外ですと...
-
VBのFunctionで、配列を引数...
-
VB6 配列を初期化したい
-
2次元動的配列の第一引数のみを...
-
Excel-VBAの配列「Public Const...
-
配列内の内容を全て表示する方法
-
Dim は何の略ですか?
-
配列を任意の数値で埋める方法
-
VLOOKUP関数で、一番下...
-
アルゴリズム、配列のフローチ...
-
verilogで配列の任意の8bitを取...
-
えfor文とか使っちゃう時点で時...
-
VBA Match関数の限界
おすすめ情報