|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2012 Messages : 2 ![]() |
Bonjour,
Je suis debutante sur Fortran. Toute aide est la bienvenue!! J'aimerais lire un fichier texte pour cela j'ai commence a creer un subroutine dans fortran de mon programme principale. Cette subroutine sert a lire les donnees d'entrees. J'ai essaye de refaire le meme principe que la subroutine de la discussion "code fortran ne pouvant pas lire un fichier txt" suggere par Sylvain Bergeron pour le code de mayoub. Mon fichier texte se presente de la facon suivante, un mot de dix lettres pour nommer la donnee qui suit. Puis on saute une ligne et j'ai un scalaire, un vecteur ou une matrice sur la nouvelle ligne: AAAAABBBBB 5 CCCCCDDDDD 50 32 49 22 89 EEEEEFFFFF 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 10.1 20.1 30.1 40.1 50.1 60.1 Pouvez-vous m'expliquer d'apres cette exemple, comment proceder pour lire seulement les valeurs et pas les tritres, et associer cette valeur a un nom ( que je reutilise ensuite. Voila mon programme sur fortran. J'ai beaucoup d'erreur. Si quelqu'un pouvez m'aider pour corriger mes erreurs! merciii Subroutine input (AAAAABBBBB, CCCCCDDDDD, EEEEEFFFFF, Error, filename, filter) [Error 31 Compilation Aborted (code 1)] implicit none c declaration des variables integer, intent(out) :: AAAAABBBBB integer, dimension( NOMvariable1, 1), intent(out) :: CCCCCDDDDD real, dimension(NOMvariable1,3), intent(out) :: EEEEEFFFFF character(len=*), intent(in) :: filename integer :: unitfile logical, dimension(14,1) :: filter character(len=10) :: inp integer :: k integer :: i integer :: Error unitfile = 20 open(20, file='filename', action='read', form='formatted', status='old') c if (k /= 0) then Error = 1 print*, 'traitment error ' return endif c FILTER = .false. i = 0 Error = 2 do i = i + 1 c c c lire le fichier read(20, FMT=*, iostat=k)inp if (k < 0) exit if (k > 0) return ! Error = 2 c select case(inp) case('AAAAABBBBB') if (filter(1,1))return filter(1,1) = .true. do i = 1 read(20, *, iostat=k)inp, AAAAABBBBB(i,1) ! lire la valeur sans le titre print*, 'AAAAABBBBB = ',AAAAABBBBB ! imprimer a l'ecran la valeur scalaire if (k /= 0) return end do AAAAABBBBB = NOMvariable1 ! nommer la valeur scalaire case('CCCCCDDDDD') if (filter(2,1)) return filter(2,1) = .true. do i=1 [error #6404: This name does not have a type, and must have an explicit type. [DOI] ] read (20, *, iostat=k)inp, CCCCCDDDDD(i:NOMvariable1,1) [ error #6410: This name has not been declared as an array or a function. [CCCCCDDDDD]] [error #6358: Constants and expressions are invalid in read-only I/O lists. [NBSTRUCMOD]] print*, 'CCCCCDDDDD = ',CCCCCDDDDD if (k /= 0) return end do [error #6099: An ENDDO statement occurred without a corresponding DO or DO WHILE statement.] CCCCCDDDDD = NOMvariable2 [error #6404: This name does not have a type, and must have an explicit type. [NOMvariable2]] case('EEEEEFFFFF') if (filter(3,1)) return filter(3,1) = .true. do i=1 read (20, *, iostat=k)inp, EEEEEFFFFF(i:NOMvariable1, print*, 'EEEEEFFFFF = ',EEEEEFFFFF if (k /= 0) return end do EEEEEFFFFF = NOMvariable3 end select enddo Error = 0 close(20) end subroutine input |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com