DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 5308 (0x14bc) Types: TextFile Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Text_Io; with Test; package body Les_Predicats is -- premier type Histogramme type Lataille1 is range 1 .. 27; package Histo_Lettres is new Test (Taille => Lataille1); L_Histogramme1 : Histo_Lettres.Histogramme; -- nombre case dans Histogramme -- deuxieme type histogramme type Lataille2 is range 1 .. 20; package Histo_Long is new Test (Taille => Lataille2); L_Histogramme2 : Histo_Long.Histogramme; -- nombre case dans Histogramme La_Classe : Text_Io.File_Type; function Sont_Egaux_Confondre_Maj_Min (X, Y : in Character) return Boolean is begin if X = Y or Character'Pos (X) - Character'Pos (Y) = Character'Pos ('A') - Character'Pos ('a') or Character'Pos (X) - Character'Pos (Y) = Character'Pos ('a') - Character'Pos ('A') then return True; else return False; end if; end Sont_Egaux_Confondre_Maj_Min; procedure Receuillir_Lettres_Confondre_Min_Maj (Nom_Fichier : String) is type Ptr is access String; Occurrence : Integer := 1; Y : Character; S : Ptr; F : Text_Io.File_Type; use Text_Io;-- sans le use l'affectation In_File ne marcherait pas M : Text_Io.File_Mode := In_File; C : Character; I : Lataille1; begin Text_Io.Open (File => F, Mode => M, Name => "Letext", Form => ""); Text_Io.Reset (File => F, Mode => M); S := new String'(1 .. 80 => ' '); for J in 'A' .. 'Z' loop Text_Io.Reset (File => F, Mode => M); Y := J; Occurrence := 1; -- on parcours le text a la recherche de Y while ((Text_Io.End_Of_File (F)) /= True) loop Text_Io.Get (F, C); if Sont_Egaux_Confondre_Maj_Min (C, Y) then -- Text_Io.Put (C); Occurrence := Occurrence + 1; end if; end loop; I := Lataille1'Val ((1 + Character'Pos (J)) - Character'Pos ('A')); L_Histogramme1.Quantite (I) := Occurrence; end loop; Text_Io.Close (File => F); end Receuillir_Lettres_Confondre_Min_Maj; procedure Receuillir_Mots_Longueur_Inferieure (Nom_Fichier : String) is F : Text_Io.File_Type; use Text_Io;-- sans le use l'affectation In_File ne marcherait pas M : Text_Io.File_Mode := In_File; C : Character := ' '; Long : Lataille2; Trouve : Boolean := False; begin Text_Io.Open (File => F, Mode => M, Name => "Letext", Form => ""); Text_Io.Reset (File => F, Mode => M); Text_Io.Get (F, C); -- while ((Text_Io.End_Of_File (F)) /= True) loop while (C /= '$') loop --Text_Io.Get (F, C); -- on elemine les blancs while (C = ' ') loop Text_Io.Get (F, C); end loop; -- on compte longueur mot Long := 1; while (C /= ' ' and C /= '$') loop Text_Io.Get (F, C); Long := Long + 1; Trouve := True; end loop; if Trouve then Long := Long - 1; L_Histogramme2.Quantite (Long) := L_Histogramme2.Quantite (Long) + 1; Trouve := False; end if; end loop; end Receuillir_Mots_Longueur_Inferieure; procedure Put1 (Nom_Fichier : String) is type Ptr is access String; S : Ptr; begin Receuillir_Lettres_Confondre_Min_Maj (Nom_Fichier); S := new String'(1 .. 27 => ' '); Text_Io.Put_Line ("HISTOGRAMME D'UN TEXTE"); Text_Io.Put_Line ("EN CONFONDANT MAJUSCULE ET MINISCULE"); Text_Io.Put_Line ("Classe Quantite Histogramme"); for I in Lataille1'First .. Lataille1'Last loop S (1 .. Positive'Value (Integer'Image (L_Histogramme1.Quantite (I)))) := (1 .. Positive'Value (Integer'Image (L_Histogramme1.Quantite (I))) => '*'); Text_Io.Put_Line (Lataille1'Image (I) & " " & Integer'Image (L_Histogramme1.Quantite (I)) & " " & S.all); S.all := (others => ' '); end loop; end Put1; procedure Put2 (Nom_Fichier : String) is type Ptr is access String; S : Ptr; begin Receuillir_Mots_Longueur_Inferieure (Nom_Fichier); S := new String'(1 .. 27 => ' '); Text_Io.Put_Line ("Classe Quantite Histogramme"); for I in Lataille2'First .. Lataille2'Last loop S (1 .. Positive'Value (Integer'Image (L_Histogramme2.Quantite (I)))) := (1 .. Positive'Value (Integer'Image (L_Histogramme2.Quantite (I))) => '*'); Text_Io.Put_Line (Lataille2'Image (I) & " " & Integer'Image (L_Histogramme2.Quantite (I)) & " " & S.all); S.all := (others => ' '); end loop; end Put2; end Les_Predicats;