外積計算をする3点の座標から三角形のの面積をもとめる
1/6 * | (ベクトルA×ベクトルB) 内積 ベクトルC |
プログラムを
作ってコンパイルしたのですが、エラーが出てきました。
fortran
1program triangleofarea 2 implicit none 3 integer, parameter :: nc = 3 !ベクトル成分の数 4 real(8) v1( nc ), v2( nc ), v3( nc ), gaiseki( nc ) !3つのベクトル 5 real(8) naiseki, S !三角形の面積公式の内積の計算と面積 6 7 read(*, *) v1( 1 ), v1( 2 ), v1( 3 ) !3つのベクトルの読み込み 8 read(*, *) v2( 1 ), v2( 2 ), v2( 3 ) 9 read(*, *) v3( 1 ), v3( 2 ), v3( 3 ) 10 11 call triangle_area( nc, v3, gaiseki, naiseki, S )!三角形の面積を計算する 12 !サブルーチンの呼び出し 13 write(*, *) S !結果の出力 14 15end program triangleofarea 16 17 subroutine triangle_area( vsize, v3, gaiseki, naiseki, S) 18 implicit none 19 integer, intent(in) :: gaiseki( vsize ) 20 integer, intent(in) :: v3 21 integer, intent(out) :: naiseki, S 22 integer i 23 24 call gaisekikeisann( vsize, v1, v2, gaiseki, S ) 25 26 naiseki = 0.0d0 !変数の初期化 27 28 do i = 1 , vsize 29 naiseki= naiseki + gaiseki( i ) * v3( i ) !内積の計算 30 enddo 31 S = 1 / 6 * abs( naiseki ) 32 33 end subroutine triangle_area 34 35 subroutine gaisekikeisann(vsize, vector1, vector2, gaiseki ) 36 37 implicit none 38 39 integer, intent(in) :: vsize 40 real(8), intent(in) :: vector1( vsize ), vector2( vsize ) 41 integer, intent(out) :: gaiseki( vsize ) 42 !gaiseki(外積)の計算 43 gaiseki( 1 ) = vector1( 2 ) * vector2( 3 ) - vector1( 3 ) * vector2( 2 ) 44 gaiseki( 2 ) = vector1( 3 ) * vector2( 1 ) - vector1( 1 ) * vector2( 3 ) 45 gaiseki( 3 ) = vector1( 1 ) * vector2( 2 ) - vector1( 2 ) * vector2( 1 ) 46 47 end subroutine gaisekikeisann
エラーは以下の通りです。
fortran
1 subroutine triangle_area( vsize, v3, gaiseki, naiseki, S) 2 1 3Error: Symbol 'vsize' at (1) has no IMPLICIT type 4triangleofarea_rep7.f90:24:34: 5 6 call gaisekikeisann( vsize, v1, v2, gaiseki, S ) 7 1 8Error: Symbol 'v1' at (1) has no IMPLICIT type 9triangleofarea_rep7.f90:24:38: 10 11 call gaisekikeisann( vsize, v1, v2, gaiseki, S ) 12 1 13Error: Symbol 'v2' at (1) has no IMPLICIT type 14triangleofarea_rep7.f90:17:38: 15 16 subroutine triangle_area( vsize, v3, gaiseki, naiseki, S) 17 1 18Error: PROCEDURE attribute conflicts with INTENT attribute in 'v3' at (1) 19triangleofarea.f90:11:21: 20 21 call triangle_area( nc, v3, gaiseki, naiseki, S )!三角形の面積を計算する 22 1 23Warning: Type mismatch in argument 'vsize' at (1); passed INTEGER(4) to UNKNOWN 24
どこが間違えているのか全く分かりません。
添削お願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/07 19:03
2017/06/08 09:54
2017/06/08 10:02
2017/06/08 10:18
2017/06/08 10:34
2017/06/08 11:17
2017/06/08 12:20
2017/06/08 14:16
2017/06/08 14:20