{ Sur le ruban de la machine-caractères se trouve une suite de télégrammes. Chaque télégramme est terminé par le mot 'FINTEL'. Chaque télégramme est constitué de mots( suite de caractères non blancs) séparés par un ou plusieurs blancs. Ces mots sont divisés en catégories : - les mots à facturer - les mots de service non facturables qui sont 'STOP' et 'FINTEL'. La suite de télégrammes est terminée par le télégramme vide ( télégramme ne contenant aucun mot ou que des 'STOP') Ecrire un algorithme, qui pour chaque télégramme, imprime le texte du télégramme ( les mots étant séparés par un seul blanc) suivi du nombre de mots à facturer et du nombre de mots dépassant 12 caractères. Ces mots seront tronqués dans le texte imprimé. Exemple de télégramme "Bonjour stop je souhaite bon courage à tout le monde stop stop fintel stop fintel" } { Communication par paramètres } { ----------------------------- } PROGRAM Telegrammes; TYPE Tchaine = STRING[12]; VAR Freel, Kreel : INTEGER; Telegrammenonvidereel : BOOLEAN; Fe, Fs : TEXT; PROCEDURE Traiter_telegramme ( VAR Fformel, Kformel : INTEGER) ; VAR Ireel : INTEGER; Motreel : Tchaine; Nonfindetelegrammereel : BOOLEAN; PROCEDURE Obtenir_mot ( VAR Iformel : INTEGER;VAR Motformel : Tchaine); VAR C : CHAR; BEGIN READ(Fe, C); Motformel := ''; Iformel := 0; WHILE C =' ' DO READ(Fe, C); WHILE (C <> ' ') DO BEGIN Iformel := Iformel + 1; IF Iformel <= 12 THEN Motformel := Motformel + C ; READ(Fe, C) END; END; PROCEDURE Traiter_mot (Iformel : INTEGER; Motformel : Tchaine; VAR Fformel, Kformel : INTEGER; VAR Nonfindetelegrammeformel : BOOLEAN); BEGIN WRITE(Fs, Motformel, ' '); IF (Motformel <> 'FINTEL') AND (Motformel <> 'STOP') THEN Fformel := Fformel + 1; IF Iformel > 12 THEN Kformel:= Kformel + 1 ; IF Motformel = 'FINTEL' THEN Nonfindetelegrammeformel := FALSE END; BEGIN Freel := 0; Kreel := 0; Nonfindetelegrammereel := TRUE; WHILE Nonfindetelegrammereel DO BEGIN Obtenir_mot (Ireel, Motreel); Traiter_mot(Ireel, Motreel, Freel, Kreel, Nonfindetelegrammereel ) END; END; BEGIN ASSIGN(Fe, 'D_telegr.Pas'); ASSIGN(Fs, 'R_telegr.Pas'); RESET(Fe); REWRITE(Fs); Telegrammenonvidereel := TRUE; WHILE Telegrammenonvidereel DO BEGIN Traiter_telegramme (Freel, Kreel); WRITELN(Fs, 'F=', Freel, ' K=',Kreel) ; Telegrammenonvidereel := NOT ( Freel=0) END; CLOSE(Fs); END. Contenu du fichier d'entrée "D_telegr.pas" "Bonjour STOP commencer à programmer en PASCAL STOP bon courage à tout le monde FINTEL Réfléchissez avant de commencer STOP FINTEL STOP STOP N'oubliez pas de remettre un rapport FINTEL STOP FINTEL FINTEL" Contenu du fichier de sortie "R_telegr.Pas" Bonjour STOP commencer à programmer en PASCAL STOP bon courage à tout le monde FINTEL F=12 K=0 Réfléchissez avant de commencer STOP FINTEL F=4 K=0 STOP STOP N'oubliez pas de remettre un rapport FINTEL F=6 K=0 STOP FINTEL F=0 K=0