PROGRAMME 4 : Les
mots de la forme .........XY...........
Ecrire un programme qui détermine sur la machine
caractères tous les mots de la forme .....XY...... c'est à dire n
caractères suivi de la chaîne 'XY' suivi de m caractères. n et m sont des entiers quelconques et strictement supérieurs à 0. On assimilera la machine caractère à un fichier TEXT PASCAL. |
Le programme
PROGRAM _ XY_ (Fe, Fs);
VAR N,M : INTEGER;
C, Sauv : CHAR; Mot : STRING[40];
Mememot : BOOLEAN;
Fe, Fs : TEXT;
BEGIN
ASSIGN ( Fe, 'D_xy.Pas' );
ASSIGN ( Fs, 'R_xy.Pas' );
RESET(Fe);
REWRITE(Fs);
READ(Fe,C);
Mememot := FALSE;
WHILE ( C <> '#' ) DO
BEGIN
{ Parcours des blancs }
WHILE ( C = ' ' ) DO READ(Fe,C);
IF NOT Mememot
THEN
BEGIN
N := 0;
Mot := '';
END;
{
Recherche de 'Y' s'il existe
Soit Mot la chaîne de
caractères avant le 'Y'
N sa longueur
Sauv le caractère qui
précède 'Y' }
WHILE ( (C<>' ') AND (
C <>'#') AND (C<>'Y') ) DO
BEGIN
N :=
N + 1;
Mot := Mot
+ C;
Sauv := C;
READ(Fe, C)
END;
IF C = 'Y'
THEN
IF (Sauv = 'X') AND ( N
> 1)
{ Au moins un
caractère avant le 'X' }
THEN
BEGIN
{ Rechercher le prochain blanc en comptant le nombre
de caractères après le Y, soit M
On continue ... former le mot}
M := - 1;
WHILE ( (C<>' ') AND ( C<>'#') ) DO
BEGIN
Mot := Mot + C;
M := M + 1;
READ(Fe,C)
END;
IF M > 0
THEN
WRITELN(Fs, ' > Mot = ', Mot,
' ( Avant : ', N-1 : 2,' , ',
' Aprs : ', M:2, ' )' );
Mememot := FALSE;
END
ELSE
{ Le
caractère qui précède 'Y' est différent de 'X'
ou il n'y a pas de caractère avant le 'X'
====> Rechercher prochain Y dans le même mot }
BEGIN
Mot := Mot + C;
READ(Fe, C);
IF C <>' '
THEN Mememot := TRUE;
N := N +1
END
ELSE Mememot := FALSE;
END;
CLOSE(Fs)
END.
Les données
Contenu du fichier D_XY.Pas
abbbbbbbbXYynnnnnn aXYxxxxxxx
annnnyssssssssXYyyyyyyy XY
aaaaaaayaaaaaaayaaaaaaaaXYaaaa bbbbbbbXY XYzzzz XYXYXY #
Les résultats
Contenu du fichier R_XY.Pas
> Mot = abbbbbbbbXYynnnnnn ( Avant : 9 ,
Après : 7 )
> Mot = aXYxxxxxxx ( Avant : 1 , Après : 7 )
> Mot = annnnyssssssssXYyyyyyyy ( Avant : 14 , Après : 7 )
> Mot = aaaaaaayaaaaaaayaaaaaaaaXYaaaa ( Avant : 24 , Après : 4 )
> Mot = XYXYXY ( Avant : 2 , Après : 2 )