PROGRAMME 5 :
Les mots de la forme .........X....Y...........
Ecrire un programme qui détermine sur la machine
caractères tous les mots de la forme ...X....Y... c'est à dire c'est
à dire n caractères suivi de la lettre 'X' suivi de m caractères suivi de la lettre 'Y'
suivi de p caractères. n ,m et p On assimilera la machine caractère à un fichier TEXT PASCAL |
Le programme
PROGRAM Xy (Fe, Fs);
VAR N,M,P : INTEGER;
C : CHAR; Mot : STRING[40];
Fe, Fs : TEXT;
BEGIN
ASSIGN ( Fe , 'D_x_y.Pas' );
ASSIGN ( Fs , 'R_x_y.Pas' );
RESET(Fe);
REWRITE(Fs);
READ(Fe,C);
WHILE ( C <> '#' ) DO
BEGIN
{ Parcours des blancs }
WHILE ( C = ' ' ) DO READ(Fe,C);
{ Recherche De 'X'
S'il Existe
Soit mot la chaîne de caractère
avant le 'X'
N sa longueur }
Mot := '';
N := 0;
WHILE ( (C<>' ') AND ( C
<>'#') AND (C<>'X') ) DO
BEGIN
N := N + 1;
Mot := Mot + C;
READ(Fe, C)
END;
IF C = 'X'
THEN
BEGIN
Mot := Mot + C;
M :=0;
READ(Fe,C);
IF C = 'Y' THEN BEGIN
M:=1; Mot := Mot+C; READ(Fe,C) END;
WHILE (
(C<>' ') AND ( C <>'#') AND (C<>'Y') ) DO
BEGIN
Mot := Mot + C;
M := M+1;
READ(Fe, C)
END;
IF C = 'Y'
THEN
BEGIN
P := -1;
WHILE ( (C<>' ') AND ( C<>'#') ) DO
BEGIN
Mot := Mot + C;
P := P + 1;
READ(Fe,C)
END;
IF M*P*N <> 0
THEN
WRITELN(Fs, ' > Mot = ', Mot, ' ( Avant : ', N:2,
' Milieu : ', M:2, ' Après : ', P:2, ' )');
END;
END;
END;
CLOSE(Fs)
END.
Les données
Contenu du fichier D_X_Y.Pas
abcXaaYde abxXxaYy bXYya aXYXYyyd XYy XY aXYyyyyyyaax XYyyzt #
Les résultats
Contenu du fichier R_X_Y.Pas
> Mot = abcXaaYde ( Avant : 3 Milieu : 2
Aprs : 2 )
> Mot = abxXxaYy ( Avant : 3 Milieu : 2 Aprs : 1 )
> Mot = aXYXYyyd ( Avant : 1 Milieu : 2 Aprs : 3 )
* * * * *