
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Fortran コンパイルエラーについて
その他(プログラミング・Web制作)
-
fortranでプログラムを実行するとEnd of fileと表示されてしまいます
その他(プログラミング・Web制作)
-
fortranのコンパイラでInvalid first characterとは!?
その他(プログラミング・Web制作)
-
4
fortranでのNaNについて
その他(プログラミング・Web制作)
-
5
Fortran90についての質問です。
その他(プログラミング・Web制作)
-
6
クエット流れ
物理学
-
7
FORTRAN Legacy Extension
その他(プログラミング・Web制作)
-
8
fortranでのcsvファイルを出力する方法
その他(プログラミング・Web制作)
-
9
数値計算??
Java
-
10
【10の13乗】って英語でどう読むのですか?
英語
-
11
二分法(FORTRAN)
その他(プログラミング・Web制作)
-
12
Fortranについて教えてください
その他(プログラミング・Web制作)
-
13
e^(x^2)の積分に関して
数学
-
14
fortranでデータの抜き出しをしたい
その他(プログラミング・Web制作)
-
15
エクセル(Excel)で、数値を一定の有効数字で表示したいのですが…
Excel(エクセル)
-
16
FORTRAN90で書式に変数を使いたい
その他(プログラミング・Web制作)
-
17
fortranでのcsvファイルの読み込み
その他(プログラミング・Web制作)
-
18
Fortran でのマイナス乗数の書き方
その他(プログラミング・Web制作)
関連するQ&A
- 1 Fortran90/Fortran95→Fortran77
- 2 fortranで計算を実行するとruntime errorと表示されます。
- 3 FORTRAN77(g77)で(D)CBRTがエラーになってしまいます
- 4 fortranエラーに・・・なってしまいます
- 5 MPIを用いたFortranプログラムのコンパイル エラー
- 6 (fortran) run-time erro M6201: MATH - **:DOMAIN error とは何でしょうか?
- 7 FORTRANの実行エラーについて
- 8 fortran:includeできないとエラーがでます
- 9 フォートラン(fortran)のエラーメッセージについて
- 10 Fortranを超基礎から独学で勉強したいのですが、
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
CASLIIについてです。
-
5
フローチャートで。
-
6
フローチャートの演算記号
-
7
fortran errorについて
-
8
初期条件x(t=0)=0.001、パラメ...
-
9
水位変化の計算プログラムの作...
-
10
Excelに埋め込んだVBAのプログ...
-
11
binファイルってiphone専用です...
-
12
ファイルの開き方
-
13
Excelで4096点以上のFFTの方法
-
14
アップグレードプログラムにつ...
-
15
期間重複チェックがわかりません
-
16
10進数から8進数へ
-
17
最大公約数を求めたい!
-
18
バッチファイルでUSB挿入時に実行
-
19
ルービックキューブの解法プロ...
-
20
C言語で長方形を作る
おすすめ情報