
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フローチャートで 変数に代入す...
-
二分法(FORTRAN)
-
VBAで仕様書は書きますか?
-
正しい五十音順について
-
ファイルの開き方
-
65536は2の何乗なのでしょうか?
-
あるプログラムのコマンドライ...
-
VBAで関数をつくる
-
三菱シーケンサー works2 の日...
-
Excelで4096点以上のFFTの方法
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
Bluestacks内でダウンロードし...
-
GPIB制御
-
モジュラス103の計算とは何でし...
-
XnViewにwebpを「いつも開く」...
-
C♯で電卓を作成しています。演...
-
ドロップダウンリストの文字を...
-
C++ で、「)」が必要 というエ...
-
binファイルってiphone専用です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フローチャートの菱形が狭い。。。
-
フローチャートで 変数に代入す...
-
学校でフローチャートって教わ...
-
フローチャートで。
-
Fortranの素数のプログラム
-
サブルーチンのフローチャート...
-
fortran errorについて
-
FORTRAN★DO WHILE★の問題
-
フローチャートは作っていますか?
-
フローチャートが書けません
-
fortran 配列実行結果
-
65536は2の何乗なのでしょうか?
-
正しい五十音順について
-
あるプログラムのコマンドライ...
-
VBAで仕様書は書きますか?
-
ファイルの開き方
-
C++ で、「)」が必要 というエ...
-
Excelで4096点以上のFFTの方法
-
自分の声が遅れて聞こえてくる...
-
VBAにてメール作成した際、一部...
おすすめ情報