Corrigé C27.  Enoncé

Exercice 1 : Losange

Corrigé C27.

Exercice 1 : Losange
PROGRAM LOSANGE;
VAR
    X : INTEGER;
    I, J : INTEGER;
BEGIN
    READ(X);
    FOR I :=1 TO (X DIV 2 + 1) DO WRITE(' '); WRITELN('O');
    FOR I := 1 TO (X DIV 2 + 1) DO
        BEGIN
        FOR J := 1 TO (X DIV 2 + 1) - I DO WRITE(' ');
        WRITE('O');
        FOR J:=1 TO 2*(I-1) + 1 DO WRITE(' ');
        WRITELN('O');
        END;

    FOR I := (X DIV 2 ) DOWNTO 1 DO
        BEGIN
        FOR J := 1 TO (X DIV 2 ) - I + 1 DO WRITE(' ');
        WRITE('O');
        FOR J:=1 TO 2*(I-1) + 1 DO WRITE(' ');
        WRITELN('O');
        END;

    FOR I :=1 TO (X DIV 2 + 1) DO WRITE(' '); WRITELN('O');
END.


Exercice 2 : Mots de la forme X ....XY.....Y

{ Les mots de la forme X...XY....Y, c'est ... dire qui commencent par X
suivi de N caractŠres ( N <= 3 ) , suivi de la chaine 'Xy'
suivi de M caractŠres. M >=30 , suivi de Y }
    ALGORITHME X_xy_y
    VAR     N, M : ENTIER
        C, Prec : CAR
        Mot : CAR
    DEBUT
        LIRE(C)
        Prec := ' '
        TANTQUE ( C <> '#' )
            SI C <> 'X'
                Prec := C
                LIRE(C)
            SINON
                SI Prec <> ' '
                    LIRE(C)
                SINON
                    LIRE(C)
                     Mot := 'X'
                     N := 0
                     { Recherche de 'X' s'il existe}
                     TANTQUE(C<>' ')ET(C<>'#')ET (C<>'X')
                         N := N + 1
                         Mot := Mot + C
                         Prec := C
                         LIRE(C)
                     FINTANTQUE
                     SI (C = 'X') et (N <= 3)
                        Mot := Mot + 'X'
                         LIRE(C)
                         SI     C = 'Y'
                            Mot := Mot + 'Y'
                             LIRE(C)
                             M := 0
                             TANTQUE(C<>'')ET(C<>'#')     
                                 M := M + 1
                                 Mot := Mot + C
                                 Prec:= C
                                 LIRE(C)
                             FINTANTQUE
                             SI (Prec= 'Y')et(M >= 3)
                                 ECRIRE(Mot,N, M)
                             FSI
                        FSI
                    FSI
                FSI
            FSI
        FINTANTQUE
    FIN


Exercice 3 : Reconnaissance de constantes arithmétiques

On utilisera les modules Chiffre et Erreur défini comme suit :

    FONCTION Chiffre( C ) : BOOLEEN
    VAR C : CAR
    DEBUT
        SI (C >='0' ) et ( C <= '9')
            Chiffre := VRAI
        SINON
            Chiffre := FAUX
        FSI
    fin

    Action Erreur
    DEBUT
        TANTQUE (C <>' ') ET ( C <>'$' )
            Mot := Mot + C
        READ(Fe,C)
        FINTANTQUE
        ECRIRE( Mot , ' Constante erronée)
    FIN

    ALGORITHME Chiffre
    VAR Mot : car
        Err : BOOLEEN
        C : CAR W, D : INTEGER
    DEBUT
        LIRE(C)
        TANTQUE C <> '$'
            Err := Faux
            Mot := ''
            W := 0 D := 0
        TANTQUE C=' ' DO LIRE(C) FINTANTQUE

        TANTQUE Chiffre(C)
            W := W + 1
            Mot := Mot + C
            LIRE(C)
        FINTANTQUE

        SI C = '.'
            W := W + 1
            Mot := Mot + C
            LIRE(C)
            TANTQUE Chiffre(C)
                W := W + 1 D := D + 1 Mot := Mot + C
                LIRE(C)
            FINTANTQUE
            SI (C<>' ') ET ( C<>'$' )
                Err := VRAI
                Erreur
            FSI
        SINON
            SI (C<>' ') ET ( C<>'$' )
                Err := VRAI
                Erreur
            FSI
        FSI
        SI (Mot <> '') ET (Not Err)
            ECRIRE(Mot, W, D)
        FSI
    FINTANTQUE

FIN