Problema con memoria dinamica fortran
Publicado por beto (1 intervención) el 22/12/2007 11:18:25
Hola, qué tal? me preguntaba si podrían ayudarme con un ejercicio que tengo que hacer en fortran 90. El ejercicio es el siguiente:
Escribir un programa que cree un vector dinámico y lo vaya rellenando con los valores enteros proporcionados por el usuario. El vector comenzará dimensionado a 2 y duplicará su capacidad cada vez que se rellene completamente. El proceso se detendrá cuando el usuario introduzca el número 666.
Lo tengo prácticamente hecho lo que pasa es que al aumentarle la memoria dinámica cuando esta lleno los elementos del vector guardados anteriormente me los pisa y me los pone todos a cero...
Les estaría muy agradecido si puediera ayudarme con esto, muchas gracias
Un saludo.
El codigo que tengo hecho es este:
program prueba
implicit none
integer, dimension(:), allocatable :: vector
integer :: n, fin, i, j
i = 1
n = 2
allocate(vector(n))
print *,"El tamaño inicial del vector será de",n,"huecos"
write(*,*) "vector[",i,"]: "
read(*,*) vector(i)
do while ((vector(i).ne.666).and.(i.ne.n))
i = i +1
write(*,*) "vector[",i,"]: "
read(*,*) vector(i)
if((i.eq.n).and.(vector(i).ne.666)) then
n = n * 2
allocate(vector(n))
end if
end do
print*,"se ha introducido el numero 666, la computación ha terminado"
print *,"La lista de números es:"
write(*,*) (vector(j),j=1,n)
end program prueba
Escribir un programa que cree un vector dinámico y lo vaya rellenando con los valores enteros proporcionados por el usuario. El vector comenzará dimensionado a 2 y duplicará su capacidad cada vez que se rellene completamente. El proceso se detendrá cuando el usuario introduzca el número 666.
Lo tengo prácticamente hecho lo que pasa es que al aumentarle la memoria dinámica cuando esta lleno los elementos del vector guardados anteriormente me los pisa y me los pone todos a cero...
Les estaría muy agradecido si puediera ayudarme con esto, muchas gracias
Un saludo.
El codigo que tengo hecho es este:
program prueba
implicit none
integer, dimension(:), allocatable :: vector
integer :: n, fin, i, j
i = 1
n = 2
allocate(vector(n))
print *,"El tamaño inicial del vector será de",n,"huecos"
write(*,*) "vector[",i,"]: "
read(*,*) vector(i)
do while ((vector(i).ne.666).and.(i.ne.n))
i = i +1
write(*,*) "vector[",i,"]: "
read(*,*) vector(i)
if((i.eq.n).and.(vector(i).ne.666)) then
n = n * 2
allocate(vector(n))
end if
end do
print*,"se ha introducido el numero 666, la computación ha terminado"
print *,"La lista de números es:"
write(*,*) (vector(j),j=1,n)
end program prueba
Valora esta pregunta


0