PDA

View Full Version : [fortran95] problema algoritmo


darkblonde89
30-01-2009, 16:21
ciao... ho un problema con un algoritmo... ho una matrice quadrata da dividere in 4 parti e invertire la prima con la quarta e la seconda con la terza...
ho usato 4 cicli for e una variabile d'appoggio...

program matrice
real:: A(100,100)
integer:: n, t, i, j,s
read*, n
do i=1,n
do j= 1,n
read*, A(i,j)
enddo
enddo
do i=1,n/2
A(i,j)=t
A(i,j)=A(i,j+n/2+1)
A(i,j+n/2+1)=t
enddo
do j= 1,n/2
A(i,j)=t
A(i,j)=A(i+n/2+1,j)
A(i+n/2+1,j)=t
enddo
do i= n/2, +1, n
A(i,j)=s
A(i,j)=A(i+n/2+1,j)
A(i+n/2+1,j)=s
enddo
do j= 1,n/2
A(i,j)=s
A(i,j)=A(i,j+n)
A(i,j+n)=s
enddo
do i=1,n
do j=1,n
print*, A(i,j)
enddo
enddo
end


come input do:

4
1
1
2
2
1
1
2
2
3
3
4
4
3
3
4
4

come output dovrei avere:

4
4
3
3
4
4
3
3
1
1
2
2
1
1
2
2

m invece mi dà :
1.00000000
1.00000000
2.0000000
2.0000000
0.0000000
0.0000000
2.0000000
2.0000000
0.0000000
0.0000000
4.0000000
4.0000000
3.0000000
3.0000000
4.0000000
4.0000000

wizard1993
30-01-2009, 17:02
non conosco il fortran; ma a occhio e croce direi che te gli fai stampare un numero a virgola mobile invece di un intero

darkblonde89
31-01-2009, 10:58
non conosco il fortran; ma a occhio e croce direi che te gli fai stampare un numero a virgola mobile invece di un intero

allora... l'ho corretto ma mi inverte solo la prima con la qurta... la terza e la seconda restano invariate...

program matrice
real:: A(100,100)
integer:: n, t, i, j
read*, n
do i=1,n
do j= 1,n
read*, A(i,j)
enddo
enddo
do i=1,n/2
do j= 1,n/2
t=A(i,j)
A(i,j)=A(i+n/2, j+n/2)
A(i+n/2, j+n/2)=t
enddo
enddo
do i=1, n/2
do j=n/2,+1, n
t=A(i,j)
A(i,j)=A(n/2-i,j+n/2)
A(n/2-i,j+n/2)=t
enddo
enddo
do i=1,n
do j=1,n
print*, A(i,j)
enddo
enddo
end

tiMo
31-01-2009, 15:57
Per cosa ti serve un programma del genere?

Se è un esercizio di scuola/università non è corretto chiedere aiuto al forum.
La scuola/università serve a imparare - in questo caso - a programmare in fortran, non a cavarsela usando tutti i mezzi possibili. Faresti solo un danno a te stesso se qualcuno ti desse la soluzione.

Ciò detto ti posso aiutare dicendo che il fortran 95 ti mette a disposizione strumenti molto potenti per fare quello di cui hai bisogno senza usare i cicli.
A buon intenditor poche parole ......

ciao
tiMo