Fortran - Reducir espacio entre los elementos de una matriz.

 
Vista:

Reducir espacio entre los elementos de una matriz.

Publicado por theoretical (4 intervenciones) el 17/02/2012 14:27:36
Hola a todos, estoy trabajando en Fortran 95, pero tengo mucha experiencia en C/C++ y Java. En estos lenguajes, la separación entre las salidas de datos es controlada fácilmente por el programador. No obstante, eso no acontece en el lenguaje Fortran 95, a pesar de la existencia del descriptor de formato "BN".

El problema consiste particularmente cuando se trabaja con matrices. Al generar la salida de cualquier cálculo en el que intervengan matrices, se observa que la separación entre los elementos de la matriz es muy pronunciada, he intentado múltiples formas para tratar de reducir dicho espacio y no he sido capaz de lograrlo.

Mi pregunta es la siguiente: ¿Existe alguna forma de reducir el espacio entre los elementos de una matriz independientemente de la dimensión de la misma?

Para plantear visualmente el problema, aquí les envío un pequeño programa que muestra la matriz identidad n x n. La salida que muestra el conflicto es la contenida en el último ciclo "do".

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
program identidad
! El programa muestra el uso del constructor forall para crear una matriz identidad n x n.
implicit none
integer :: n ! Order de la matriz.
integer, dimension(:,:), allocatable :: matriz
integer :: i, j, k ! Contadores.

! Parámetro de entrada
print *, 'El orden de la matriz es:'
read *, n

allocate(matriz(n,n))

! Realización de los cálculos
do i = 1, n! Genera todos los posibles elementos de la matriz.
do j = 1, n
if(i == j) then
matriz(i,j) = 1
else
matriz(i,j) = 0
end if
end do
end do

forall(i = 1:n-1, k = 1:n, matriz(k,i) /= 0)
matriz(k,i) = 1
end forall

! Muestra resultados
print 10, trim(adjustr('La matriz Ejemplo51 de orden')),n, trim(adjustr('es:'))
10 format(a30,BN,i4,BN,a5)
do i = 1,n
write(*,*) (matriz(i,j), j = 1,n)
end do
deallocate(matriz)
stop
end program identidad
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Agradeciendo de antemano cualquier ayuda que me puedan brindar.

Atentamente,
Theoretical
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder