fortranを勉強していたのですがエラーがでてしまい、何時間かけても理解できなかったので質問させてください。
以下プログラム
program test
!ここからメインルーチン
!前準備 配列の用意
implicit none
integer N
integer,dimension(0:N,0:N) :: A
integer :: i,j,k
read * ,N
!初期状態の代入
do i=0,N
do j=0,N
A(i,j)=0
end do
end do
do i=N/2,N-1
A(N/2,i)=1
end do
do i=N/2,N-1
A(N/2+1,i)=-1
end do
!ループ 50回ループさせる
do k=0,50
!状態の表示
call visualize
!サブルーチン visualize
subroutine visualize
do i=0,N
do j=0,N
if(A(i,j)== 1) write(*,'(A1)',advance='NO') "*"
if(A(i,j)== 0) write(*,'(A1)',advance='NO') " "
if(A(i,j)==-1) write(*,'(A1)',advance='NO') "+"
end do
write(*,*)
end do
!end subroutine visualize
call insert
!サブルーチン insert
subroutine insert
do i=0,N
do j=0,N
if(A(i,j)== 1) A(i,j)=-1
if(A(i,j)== 0) A(i,j)=max(0,A(i-1,j),A(i,j-1),A(i,j+1),A(i+1,j))
if(A(i,j)==-1) A(i,j)=0
end do
end do
!end subroutine insert
end do
end program test
これでコンパイラすると
In file test.f90:48
subroutine visualize
1
Error: Unclassifiable statement at (1)
In file test.f90:69
subroutine insert
1
Error: Unclassifiable statement at (1)
とでます
いろいろ調べたのですが全くわかりませんでした
できればよろしくお願いします
No.3ベストアンサー
- 回答日時:
以下のような感じで良いかと思います。
参考になれば幸いです。program test
! ここからメインルーチン
! 前準備 配列の用意
implicit none
integer n
! ★nのサイズは実行時までわからないのでallocatableとして実行時に決定する
integer, allocatable, dimension (:, :) :: a
integer :: i, j, k
read *, n
allocate (a(0:n,0:n)) ! ★nの値を読み込んでから配列領域を確保する
! 初期状態の代入
! do i = 0, n
! do j = 0, n
! a(i, j) = 0
! end do
! end do
! ★上記は以下のようにより簡単に書けます
a = 0
do i = n/2, n - 1
a(n/2, i) = 1
end do
do i = n/2, n - 1
a(n/2+1, i) = -1
end do
! ループ 50回ループさせる
do k = 0, 50
! 状態の表示
call visualize
call insert
end do
contains !★サブルーチンはまとめてcontainsの後ろに書く
! サブルーチン visualize
subroutine visualize
do i = 0, n
do j = 0, n
if (a(i,j)==1) write (*, '(A1)', advance='NO') '*'
if (a(i,j)==0) write (*, '(A1)', advance='NO') ' '
if (a(i,j)==-1) write (*, '(A1)', advance='NO') '+'
end do
write (*, *)
end do
end subroutine visualize
! サブルーチン insert
subroutine insert
do i = 0, n
do j = 0, n
if (a(i,j)==1) a(i, j) = -1
if (a(i,j)==0) a(i, j) = max(0, a(i-1,j), a(i,j-1), a(i,j+1), &
a(i+1,j))
if (a(i,j)==-1) a(i, j) = 0
end do
end do
end subroutine insert
end program test
No.1
- 回答日時:
program test
から
end program test
までが一つのプログラム単位になっているんだけど,あなたの書いたものだと,その中に
subroutine visualize
とか
subroutine insert
とかわけのわからない文が書かれている。いったいどういう意図なんだろう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フローチャートで。
-
フローチャートの菱形が狭い。。。
-
fortran errorについて
-
フローチャート以外の設計方法
-
65536は2の何乗なのでしょうか?
-
正しい五十音順について
-
C言語の課題で、1年の秒数を計...
-
Notepad++の関数リスト表示でC...
-
VBAで仕様書は書きますか?
-
Excelに埋め込んだVBAのプログ...
-
UWSCで指定のフォルダを開きたい。
-
グループを均等に分けるには?...
-
シャープのポケコンについて
-
めんどくさがり屋はプログラマ...
-
読み込み中にアクセス違反が発...
-
排他的論理和 BCC(水平パリテ...
-
画像処理
-
ドロップダウンリストの文字を...
-
EXCELなどで「返す」という表現
-
科学技術計算の仕事について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フローチャートで 変数に代入す...
-
フローチャートの菱形が狭い。。。
-
フローチャートで。
-
fortran errorについて
-
フローチャート以外の設計方法
-
二分法(FORTRAN)
-
fortran go to 文
-
フローチャート(本当に困って...
-
TeXでフローチャート
-
フローチャートが書けません
-
【fortran】フーリエ級数について
-
フローチャートのループ
-
フローチャートを書きたい
-
配列 x に入っているデータの最...
-
連立1次方程式を計算するFortra...
-
フロートチャートをVBAで表すには
-
カシオ fx-4800pにて
-
for文のフローチャート
-
FORTRAN subroutineと配列と繰...
-
正しい五十音順について
おすすめ情報