-- -- Deuxième solution à l'exercice 1 du lab 1 de INF2110. -- Je fourni cette solution car j'ai vu que plusieurs personnes au lab avaient le réflexe d'aller -- vers une solution similaire, qui est tout aussi valable que la première. -- -- Auteur : Guillaume Huet -- Date de dernière modification : 21 janvier 2004 -- WITH Ada.Text_IO; PROCEDURE Exercice01 IS fichierEntree : Ada.Text_IO.File_Type; -- Fichier source fichierSortie : Ada.Text_IO.File_Type; -- Fichier destination caractereCourant : Character; -- Caractère courant dans le fichier source accepteBlanc : Boolean; -- Pour déterminer si on accepte le blanc ou non BEGIN -- Ouvrir le fichier source en lecture Ada.Text_IO.Open(fichierEntree, Ada.Text_IO.In_File, "source.txt"); -- Ouvrir le fichier destination en écriture Ada.Text_IO.Create(fichierSortie, Ada.Text_IO.Out_File, "sortie.txt"); WHILE NOT Ada.Text_IO.End_Of_File(fichierEntree) LOOP accepteBlanc := True; WHILE NOT Ada.Text_IO.End_Of_Line(fichierEntree) LOOP -- Lire un caractère dans le fichier source Ada.Text_IO.Get(fichierEntree, caractereCourant); IF caractereCourant = ' ' AND accepteBlanc THEN -- Si 'caractereCourant' est un blanc et que c'est le premier, alors on l'écrit dans -- le fichier destination et on met 'accepteBlanc' à faux pour que le prochain caractère -- soit ignoré si c'est un blanc. accepteBlanc := False; Ada.Text_IO.Put(fichierSortie, caractereCourant); ELSIF caractereCourant /= ' ' THEN -- Si 'caractereCourant' n'est pas un blanc, on met 'accepteBlanc' à vrai (afin d'accepter le -- prochain blanc) et on écrit le caractère dans le fichier destination. accepteBlanc := True; Ada.Text_IO.Put(fichierSortie, caractereCourant); END IF; END LOOP; -- On est sur une fin de ligne dans le fichier source, alors bouffer la fin de ligne -- et écrire une fin de ligne dans le fichier destination. Ada.Text_IO.Skip_Line(fichierEntree); Ada.Text_IO.New_Line(fichierSortie); END LOOP; -- Refermer les fichiers Ada.Text_IO.Close(fichierEntree); Ada.Text_IO.Close(fichierSortie); END Exercice01;