Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3080 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  problème lecture de fichier texte en ada

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème lecture de fichier texte en ada

n°2174481
gargui
Posté le 07-02-2013 à 11:47:49  profilanswer
 

bonjour, je dispose d'un fichier texte qui se présente de la forme suivante :
0.0000000
0.0000500
0.0001000
0.0001500
0.0002000
0.0002500
0.0003000
0.0003500
0.0004000
0.0004500
0.0005000
 
mon but étant de lire le fichier texte et de pouvoir intégrer ces valeurs dans un tableau donc voici mon code :
 
WITH Text_Io;
USE Text_Io;
PROCEDURE gaussienne2 IS
   F : File_Type;
   C : Character;
   TYPE Valeur_Vitesse IS ARRAY (1..150000) OF Character;
   Val:Valeur_Vitesse;
   I:Integer:=1;
   
BEGIN
   Open(F,In_File,"vitesse1.txt","" );
   -- on ouvre le fichier de nom truc.txt
   -- dans le programme on l'appelle F
   
   WHILE NOT End_Of_File(F) LOOP
      IF End_Of_Line(F) THEN
         i:=i+1;
         Get(F,C); -- on lit un caractere dans F
         New_Line;
      ELSE
         Get(F,C); -- on lit un caractere dans F
         val(i):=c;
         --Put(c);   -- on affiche c a l'ecran
      END IF;
   END LOOP;
   Close(F);  -- fermeture de f
       
   FOR K IN 1..I LOOP
      Put(character'val(K));
   END LOOP;
   
END gaussienne2;

 
Mon put(c) m'affiche correctement les valeurs , en revanche ma boucle tout a la fin de m'affiche pas les valeurs du fichier texte dans le tableau et je ne trouve pas l'erreur ..
de même quand je lit mon fichier texte, ada va stocker ces valeurs dans le tableau sous forme de caractère, comment puis je avoir des integer ? de manière a pouvoir traiter ces nombres par la suite. en vous remerciant de votre aide,
gargui

mood
Publicité
Posté le 07-02-2013 à 11:47:49  profilanswer
 

n°2174499
Profil sup​primé
Posté le 07-02-2013 à 13:12:35  answer
 

Tu peux lire des float avec Ada Float_Text_Io
Ou avec l'attribut value du type Float.

n°2174501
gargui
Posté le 07-02-2013 à 13:21:24  profilanswer
 

ok du coup je pourrais les lire en considérant des float , en revanche je n'arrive pas a stocker les valeurs dans mon tableau .. :/

n°2174507
Profil sup​primé
Posté le 07-02-2013 à 13:51:01  answer
 

gargui a écrit :

ok du coup je pourrais les lire en considérant des float , en revanche je n'arrive pas a stocker les valeurs dans mon tableau .. :/


T'arrive pas à lire ton tableau,
 
C'est sensé être ça ? :

Code :
  1. FOR K IN 1..I LOOP
  2.      Put(character'val(K));
  3.   END LOOP;


 
C'est put(Val(i));

n°2174516
gargui
Posté le 07-02-2013 à 14:26:18  profilanswer
 

 J'ai modifié mon programme , grâce a ton aide je peux visualiser mes nombres , cependant je ne visualise que le dernier et je ne comprend pas pourquoi ..  car normalement a la fin du programme, ma premiere boucle va me permettre de parcourir mon tableau , et ma deuxieme boucle devrait me permettre dafficher la valeur dans la case.. la valeur est-elle bien stockée ?
 
BEGIN
   Open(F,In_File,"vitesse1.txt","" );
   -- on ouvre le fichier de nom vitesse.txt
   -- dans le programme on l'appelle F
   I:=1;
   j:=1;
   WHILE NOT End_Of_File(F) LOOP
      IF End_Of_Line(F) THEN
         I:=I+1; -- I permettant de parcourir mon tableau avec les valeurs de vitesse
         j:=1;     -- J permettant de parcourir les caractères pour chaque case du tableau
         Get(F,C); -- on lit un caractere dans F
         New_Line;
      ELSE
         Get(F,C); -- on lit un caractere dans F
         Val(J):=c;  -- je met le caractère dans la case
         J:=J+1;     -- j'incrémente pour ne pas écraser le caractère précedent
         --Put(c);   -- on affiche c a l'ecran
      END IF;
   END LOOP;
   Close(F);  -- fermeture de f
 
    FOR K IN 1..I LOOP
     FOR L IN 1..J LOOP
     PUT(Val(L));
      END LOOP;
   END LOOP;
   END Gaussienne2;

n°2174522
Profil sup​primé
Posté le 07-02-2013 à 14:44:11  answer
 

Finalement, tu saisies des caractères ou des Float ?
 

Code :
  1. with Text_Io;
  2. with Ada.Float_Text_Io;
  3. use Text_Io;
  4. use Ada.Float_Text_Io;
  5. procedure Test is
  6.  
  7.   I : Natural := 0;
  8.   C : Float := 0.0;
  9.   F : File_Type;
  10.   type Valeur_Vitesse is array (1..150000) of float;
  11.   Val:Valeur_Vitesse;
  12. begin
  13.   Open(F,In_File,"vitesse1.txt","" );
  14.   -- on ouvre le fichier de nom vitesse.txt                                                                                                            
  15.   -- dans le programme on l'appelle F                                                                                                                  
  16.   I:=1;
  17.   while not End_Of_File(F) loop
  18.      if End_Of_Line(F) then
  19.         I:=I+1; -- I permettant de parcourir mon tableau avec les valeurs de vitesse                                                                    
  20.         Get(F,C); -- on lit un caractere dans F                                                                                                        
  21.         Val(I) := C;
  22.         New_Line;
  23.      else
  24.         -- can not occure.
  25.         Get(F,C); -- on lit un caractere dans F                                                                                                        
  26.         Val(J):=C;  -- je met le caractère dans la case                                                                                                
  27.         I:=I+1;     -- j'incrémente pour ne pas écraser le caractère précedent                                                                          
  28.                     --Put(c);   -- on affiche c a l'ecran                                                                                              
  29.      end if;
  30.   end loop;
  31.   Close(F);  -- fermeture de f                                                                                                                          
  32.  
  33.   for K in 1..I loop
  34.      PUT(Val(K));
  35.   end loop;
  36. end Test;

n°2174529
gargui
Posté le 07-02-2013 à 14:56:47  profilanswer
 

bah quand je fait  Open(F,In_File,"vitesse1.txt","" ); le programme le prend comme une suite de caractère, donc je ne peux pas les interpréter comme des floats, donc ce que j'aimerais pouvoir faire cest stocker ces caractères dans le tableau, l'un après l'autre et après les transformer en float. Car je ne sais pas comment les interpréter directement comme float et les stocker un par un dans le tableau :/

n°2174612
Profil sup​primé
Posté le 07-02-2013 à 18:24:18  answer
 

Ben t'as qu'as copier coller.
Dans le code ci-dessus, j'ai utilisé Ada.float_text_io qui lit et écrit dans un fichier texte.
Au lieux de lire caractère par caractère je lis un float.

n°2174672
gargui
Posté le 08-02-2013 à 10:40:53  profilanswer
 

ok je vais essayer ca merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  problème lecture de fichier texte en ada

 

Sujets relatifs
Comment créer une page web qui affiche tout les images d'un fichier ?Probleme : Tableau de pointeurs sur structure
[RESOLU] Problème de version de PHP (ou ZEND) ?Export Feuille Excel en valeur avec cellule fusionnées
problème de lecture d'un fichier texteproblème lecture d'un fichier texte
Problème de noob ecriture/lecture fichier texteproblème de lecture de fichier texte
[JAVA] Probleme lecture fichier texte 
Plus de sujets relatifs à : problème lecture de fichier texte en ada


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR