Corrigé C26.  Enoncé

Exercice 1 : Palindromes

    ALGORITHME Palindrome
    VAR     C, Mot1, Mot2     : CAR
        Compt          : ENTIER
    DEBUT
        LIRE(C)
        Compt := 0
        TANTQUE C # '.' :
            TANTQUE C = ' ' : LIRE(C) FINTANTQUE
            Mot1, Mot2 := ''
            TANTQUE C # ' ' ET C # '.' :
                Mot1 := Mot1 + C
                Mot2 := C + Mot2
                LIRE(C)
            FINTANTQUE
            SI Mot1 # '' : {les mots existent}
                SI Mot1 = Mot2
                    Compt := Compt + 1
                FSI
            FSI
        FINTANTQUE
        ECRIRE(Compt)
    FIN

Exercice 2 : Epreuve de sélection

    ALGORITHME Epreuve
    CONST
        N= 10
        Nreponses = 3
        Nquestions = 5
    VAR     I, J, K, K1, K2, N, Rep, Total      : ENTIER
        Reponse     : TABLEAU(1..Nquestions, 1..Nreponses) DE ENTIER
        Admis     : TABLEAU (1..N) DE ENTIER {Admis }
        Tref         : TABLEAU[1 .. N] DE ENTIER { Refusés}
    DEBUT
        LIRE(N)
        K1, K2 := 0
        LIRE(Reponse)
        POUR I=1, N :
            Total := 0
            {Lecture des réponses du I-ème candidat }
            POUR     J=1, Nquestions
                POUR K :=1, Nreponses
                    LIRE(Rep)
                    SI Rep = 1
                        SI Réponse(J, K) = Rep
                            Total := Total + 5
                        SINON
                            Total := Total - 4
                        FSI
                    FSI
                FINPOUR
            FINPOUR
            SI Total > 8 :
                K1 := K1 + 1
                Admis(K1) := I
            SINON
                K2 := K2 + 1
                Tref(K2) := I
            FSI
        FINPOUR
        ECRIRE(Admis)
        ECRIRE(Tref)
    FIN


Programme PASCAL correspondant

PROGRAM Epreuve ;
CONST
    N= 10 ;
    Nreponses = 3;
    Nquestions = 5;
VAR
    I, J, K, K1, K2, Rep, Total : INTEGER;
    Reponse: ARRAY(.1..Nquestions, 1..Nreponses.) OF INTEGER;
    Admis : ARRAY (.1..N.) OF INTEGER {Admis } ;
    Tref : ARRAY[1 .. N] OF INTEGER { Refus‚s} ;
    Fs, Fe : TEXT;
BEGIN
    ASSIGN(Fe, 'D_select.pas');
    ASSIGN(Fs, 'D_select.pas');
    RESET(Fe);
    REWRITE(Fs);
    READLN(Fe);

    FOR I:=1 TO Nquestions DO
        BEGIN
            FOR J:=1 TO Nreponses DO
            READ(Fe, Reponse(.I, J.) );
            READLN(Fe)
        END;
    K1 := 0;
    K2 := 0;
    FOR I := 1 TO N DO
        BEGIN
            Total := 0;
            {Lecture des réponses Du I-ème Candidat }
            READLN(Fe); READLN(Fe);
            FOR J:=1 TO Nquestions DO
                BEGIN
                     FOR K :=1 TO Nreponses DO
                         BEGIN
                             READ(Fe, Rep);
                             IF Rep = 1
                            THEN
                                 IF Reponse(.J, K.) = Rep
                                 THEN Total := Total + 5
                                 ELSE     Total := Total - 4
                         END;
                    READLN(Fe);
                 END;

            IF Total > 8
            THEN
                BEGIN
                     K1 := K1 + 1;
                     Admis(.K1.) := I
                END
            ELSE
                BEGIN
                    K2 := K2 + 1 ;
                     Tref(.K2.) := I
                END
        END;
    WRITELN(Fs, 'Admis :');
    FOR I:=1 TO K1 DO WRITELN(Fs, Admis[I]);
    WRITELN(Fs, 'Refusés :');
    FOR I:=1 TO K2 DO WRITELN(Fs, Tref[I]);
    CLOSE(Fs)
END.



Ce programme admet comme fichier de données (D_select.pas)

Bonnes reponses
1 0 1
0 0 1
1 1 1
1 0 0
0 0 0

Candidat 1
0 0 1
1 0 0
1 1 1
0 0 0
0 0 1

Candidat 2
0 1 1
1 0 0
1 0 1
0 1 0
0 0 1

Candidat 3
0 1 0
1 0 0
0 1 1
1 0 0
0 1 1

Candidat 4
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Candidat 5
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1

Candidat 6
1 1 1
1 1 0
1 0 1
0 1 0
0 1 1

Candidat 7
1 0 1
0 0 0
1 1 1
0 0 1
1 0 1

Candidat 8
0 1 1
1 1 0
1 0 1
1 0 1
0 0 0

Candidat 9
0 0 0
0 1 0
1 1 1
1 0 0
1 0 1

Candidat 10
1 0 1
1 0 0
1 1 1
1 1 0
0 1 1

et comme résultats (R_select.pas)

Admis :
1
7
10
Refusés :
2
3
4
5
6
8
9