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 { Refuss} ;
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