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
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