fortran - resueltos - Error de función de lectura simple
problemas resueltos de programación en fortran 95 pdf (3)
¡Estás tratando de leer en números complejos ( A
es complejo)! Como tal, debe especificar números complejos para el código ... Dado que proporciona solo un número entero, el programa no sabe qué hacer.
Proporcionar (1,0)
y (2,0)
lugar de 1
y 2
hará el truco.
Me imagino que esto es algo tonto que me he perdido, pero le pregunté a toda la clase y nadie parece resolverlo. Hacer un programa simple llamando a una subrutina y estoy teniendo problemas con la lectura del ciclo do en las entradas de la matriz.
program Householder_Program
use QR_Factorisation
use numeric_kinds
complex(dp), dimension(:,:), allocatable :: A, Q, R, V
integer :: i, j, n, m
print *, ''Enter how many rows in the matrix A''
read *, m
print *, ''Enter how many columns in the matrix A''
read *, n
allocate(A(m,n), Q(m,n), R(n,n), V(n,n))
do i = 1,m
do j = 1,n
Print *, ''Enter row'', i, ''and column'', j, ''of matrix A''
read *, A(i,j)
end do
end do
call Householder_Triangularization(A,V,R,n,m)
print *, R
end program
Me pedirá A (1,1) pero cuando escriba un número no me pedirá A (1,2), dejará una línea en blanco. Cuando intento poner un 2do número, error y digo:
Enter row 1 and column 1 of matrix A
1
2
At line 22 of file HouseholderProgram.f90 (unit = 5, file = ''stdin'')
Fortran runtime error: Bad repeat count in item 1 of list input
En caso de que la entrada del usuario sea siempre real, y quiera leerla en una matriz tipo compleja, puede hacer algo como esto:
Print *, ''Enter row'', i, ''and column'', j, ''of matrix A''
read *, dummy
A(i,j)=dummy
donde el dummy
se declara real
. Esto salvará al usuario de la necesidad de ingresar el paréntesis requerido para números complejos. (La conversión a complejo es automática)
Su variable A
es (una matriz) de tipo complejo. Esto significa que cuando intenta hacer la entrada dirigida por la lista de los valores del elemento, no puede simplemente especificar un solo número. Entonces, en su caso, el problema no está en el programa sino en la entrada.
De la norma Fortran 2008, 10.10.3
Cuando el siguiente elemento efectivo es de tipo complejo, el formulario de entrada consiste en un paréntesis izquierdo seguido de un par ordenado de campos de entrada numéricos separados por una coma (si el modo de edición decimal es POINT) o punto y coma (si el modo de edición decimal es COMMA ), y seguido por un paréntesis derecho.
La entrada, entonces, debe ser algo así como (1., 12.)
.