Buenas, aqui les pongo un código de fortran 2003 (creo que este en concreto no varia respecto al 90) con el que tengo problemas.
PROGRAM PRUEBA1
INTEGER,PARAMETER : DOUBLE=8
REAL(KIND=DOUBLE),DIMENSION(6) : V=0.0
INTEGER : I
INTEGER,DIMENSION(5) : ENTERO=0
REAL : DIF
OPEN(10,FILE="/home/felipe/Documentos/MIS PRUEBAS/PRUEBA1. DAT")! FUNCIONA PERFECTAMENTE LA LECTURA DEL NOMBRE
OPEN(11,FILE="/home/felipe/Documentos/MIS PRUEBAS/PRUEBAESCRITURA1. DAT",STATUS='REPLACE')! FUNCIONA PERFECTAMENTE LA LECTURA DEL NOMBRE
DO I=1,6
READ (10,201) V(I)
201 FORMAT (F10. 3)
WRITE(*,202) V(I)
202 FORMAT (F10. 3)
END DO
DO I=1,5
DIF=V(I)-V(I+1)
WRITE(11,200) ABS(DIF)
200 FORMAT (F10. 4)
END DO
WRITE(11,*)'---------------MULTIPLICAMOS POR 1000---------------------'
DO I=1,5
DIF=V(I)-V(I+1)
ENTERO(I)=INT(ABS(DIF)*1000.)
WRITE(11,*)ABS(DIF)*1000
END DO
WRITE(11,*)'---------------ESCRIBIMOS EL ENTERO------------------------'
DO I=1,5
WRITE(11,*)ENTERO(I)
END DO
CLOSE(10)
CLOSE(11)
END PROGRAM PRUEBA1
!
Lo primero que hace es leer de un fichero de datos llamado PRUEBA1. DAT los siguientes datos:
5. 15
4. 30
3. 20
2. 51
8. 12
3. 54
Acto seguido, trabaja con ellos calculando la diferencia en valor absoluto entre el primero y el siguiente. Escribiendolo y luego lo multiplica mostrando la parte entera, pero esta está mal. Os pongo el fichero de salida que es pruebaescritura1. Dat
0. 8500
1. 1000
0. 6900
5. 6100
4. 5800
---------------MULTIPLICAMOS POR 1000---------------------
850. 00000
1100. 0000
690. 00000
5610. 0000
4580. 0000
---------------ESCRIBIMOS EL ENTERO------------------------
850
1100
689
5610
4579
!
Donde vemos que deberia aparecer 690 y 4580 en vez de 689 o 4579 respectivamente... ¿Alguién sabe como arreglarlo?