Bonjour à tous,
Je fais face à un problème, surement dû à mon inexpérience en Fortran.
J'ai la subroutine suivante :
Qui affiche ce qui suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 SUBROUTINE getmatrix (A,n,m) INTEGER :: m, n, i, j REAL*4,intent ( inout ) :: A(n,m) PRINT *,"GETMATRIX(N:",n,"M:",m,")" do i = 1, n do j = 1, m A(i,j)=int(rand(0)*99)+1 end do end do do i = 1, n do j = 1, m PRINT *,"I: ",i," J: ",j," MAT2: ",A(i,j) end do end do END SUBROUTINE getmatrix
Et le programme main suivant :GETMATRIX(N: 64 M: 1 )
I: 1 J: 1 MAT2: 1.00000000
I: 2 J: 1 MAT2: 14.0000000
I: 3 J: 1 MAT2: 75.0000000
I: 4 J: 1 MAT2: 46.0000000
I: 5 J: 1 MAT2: 53.0000000
I: 6 J: 1 MAT2: 22.0000000
I: 7 J: 1 MAT2: 5.00000000
I: 8 J: 1 MAT2: 68.0000000
I: 9 J: 1 MAT2: 68.0000000
I: 10 J: 1 MAT2: 93.0000000
I: 11 J: 1 MAT2: 38.0000000
I: 12 J: 1 MAT2: 52.0000000
I: 13 J: 1 MAT2: 83.0000000
I: 14 J: 1 MAT2: 4.00000000
I: 15 J: 1 MAT2: 6.00000000
I: 16 J: 1 MAT2: 53.0000000
I: 17 J: 1 MAT2: 67.0000000
I: 18 J: 1 MAT2: 1.00000000
I: 19 J: 1 MAT2: 38.0000000
I: 20 J: 1 MAT2: 7.00000000
I: 21 J: 1 MAT2: 42.0000000
I: 22 J: 1 MAT2: 68.0000000
I: 23 J: 1 MAT2: 59.0000000
I: 24 J: 1 MAT2: 93.0000000
I: 25 J: 1 MAT2: 84.0000000
I: 26 J: 1 MAT2: 53.0000000
I: 27 J: 1 MAT2: 10.0000000
I: 28 J: 1 MAT2: 65.0000000
I: 29 J: 1 MAT2: 42.0000000
I: 30 J: 1 MAT2: 70.0000000
I: 31 J: 1 MAT2: 91.0000000
I: 32 J: 1 MAT2: 76.0000000
I: 33 J: 1 MAT2: 26.0000000
I: 34 J: 1 MAT2: 5.00000000
I: 35 J: 1 MAT2: 73.0000000
I: 36 J: 1 MAT2: 33.0000000
I: 37 J: 1 MAT2: 63.0000000
I: 38 J: 1 MAT2: 75.0000000
I: 39 J: 1 MAT2: 99.0000000
I: 40 J: 1 MAT2: 37.0000000
I: 41 J: 1 MAT2: 25.0000000
I: 42 J: 1 MAT2: 98.0000000
I: 43 J: 1 MAT2: 72.0000000
I: 44 J: 1 MAT2: 75.0000000
I: 45 J: 1 MAT2: 65.0000000
I: 46 J: 1 MAT2: 8.00000000
I: 47 J: 1 MAT2: 63.0000000
I: 48 J: 1 MAT2: 88.0000000
I: 49 J: 1 MAT2: 27.0000000
I: 50 J: 1 MAT2: 44.0000000
I: 51 J: 1 MAT2: 76.0000000
I: 52 J: 1 MAT2: 48.0000000
I: 53 J: 1 MAT2: 24.0000000
I: 54 J: 1 MAT2: 28.0000000
I: 55 J: 1 MAT2: 36.0000000
I: 56 J: 1 MAT2: 17.0000000
I: 57 J: 1 MAT2: 49.0000000
I: 58 J: 1 MAT2: 89.0000000
I: 59 J: 1 MAT2: 91.0000000
I: 60 J: 1 MAT2: 6.00000000
I: 61 J: 1 MAT2: 90.0000000
I: 62 J: 1 MAT2: 50.0000000
I: 63 J: 1 MAT2: 52.0000000
I: 64 J: 1 MAT2: 32.0000000
Qui affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 program main DOUBLE PRECISION, dimension (:,:), allocatable :: MAT2 allocate(MAT2(64,1)) CALL getmatrix (MAT2,64,1) do i = 1, 64 do j = 1, 1 PRINT *,"I: ",i," J: ",j," MAT2: ",MAT2(i,j) end do end do deallocate(MAT2) end
Pourquoi les valeurs dans la matrice perçue par le main, ne sont pas identique au valeurs initialisés par la fonction getmatrix.I: 1 J: 1 MAT2: 8388609.9843750000
I: 2 J: 1 MAT2: 103079232150.00000
I: 3 J: 1 MAT2: 268435522.32812500
I: 4 J: 1 MAT2: 3298535412736.0000
I: 5 J: 1 MAT2: 28587306682368.000
I: 6 J: 1 MAT2: 274877974624.00000
I: 7 J: 1 MAT2: 512.00012712180614
I: 8 J: 1 MAT2: 343597449984.00000
I: 9 J: 1 MAT2: 7.8125019360868464E-003
I: 10 J: 1 MAT2: 32768.008068084717
I: 11 J: 1 MAT2: 3298535425280.0000
I: 12 J: 1 MAT2: 28587306675200.000
I: 13 J: 1 MAT2: 343597451936.00000
I: 14 J: 1 MAT2: 2473901696000.0000
I: 15 J: 1 MAT2: 3848291239168.0000
I: 16 J: 1 MAT2: 6597070859648.0000
I: 17 J: 1 MAT2: 2048.0005021095276
I: 18 J: 1 MAT2: 10737420370.250000
I: 19 J: 1 MAT2: 6047315042048.0000
I: 20 J: 1 MAT2: 21474840753.500000
I: 21 J: 1 MAT2: 43980473733120.000
I: 22 J: 1 MAT2: 6047315043328.0000
I: 23 J: 1 MAT2: 131072.03247451782
I: 24 J: 1 MAT2: 17592190401536.000
I: 25 J: 1 MAT2: 68719493592.000000
I: 26 J: 1 MAT2: 137438987568.00000
I: 27 J: 1 MAT2: 2147484174.0000000
I: 28 J: 1 MAT2: 50331656.257812500
I: 29 J: 1 MAT2: 19791213642752.000
I: 30 J: 1 MAT2: 8192.0020358562469
I: 31 J: 1 MAT2: 206158464360.00000
I: 32 J: 1 MAT2: 8589936714.0000000
I: 33 J: 1 MAT2: 0.0000000000000000
I: 34 J: 1 MAT2: 0.0000000000000000
I: 35 J: 1 MAT2: 0.0000000000000000
I: 36 J: 1 MAT2: 0.0000000000000000
I: 37 J: 1 MAT2: 0.0000000000000000
I: 38 J: 1 MAT2: 0.0000000000000000
I: 39 J: 1 MAT2: 0.0000000000000000
I: 40 J: 1 MAT2: 0.0000000000000000
I: 41 J: 1 MAT2: 0.0000000000000000
I: 42 J: 1 MAT2: 0.0000000000000000
I: 43 J: 1 MAT2: 0.0000000000000000
I: 44 J: 1 MAT2: 0.0000000000000000
I: 45 J: 1 MAT2: 0.0000000000000000
I: 46 J: 1 MAT2: 0.0000000000000000
I: 47 J: 1 MAT2: 0.0000000000000000
I: 48 J: 1 MAT2: 0.0000000000000000
I: 49 J: 1 MAT2: 0.0000000000000000
I: 50 J: 1 MAT2: 0.0000000000000000
I: 51 J: 1 MAT2: 0.0000000000000000
I: 52 J: 1 MAT2: 0.0000000000000000
I: 53 J: 1 MAT2: 0.0000000000000000
I: 54 J: 1 MAT2: 0.0000000000000000
I: 55 J: 1 MAT2: 0.0000000000000000
I: 56 J: 1 MAT2: 0.0000000000000000
I: 57 J: 1 MAT2: 0.0000000000000000
I: 58 J: 1 MAT2: 0.0000000000000000
I: 59 J: 1 MAT2: 0.0000000000000000
I: 60 J: 1 MAT2: 0.0000000000000000
I: 61 J: 1 MAT2: 0.0000000000000000
I: 62 J: 1 MAT2: 0.0000000000000000
I: 63 J: 1 MAT2: 0.0000000000000000
I: 64 J: 1 MAT2: 0.0000000000000000
Merci beaucoup
Partager