NF01 - MedianP16 Corrigé
NF01 - MedianP16 Corrigé
NF01 - MedianP16 Corrigé
Examen Médian
Corrigé
(Durée : 1 heure 30, documents non autorisés)
Attention : chaque partie doit être rédigée sur une copie séparée
b) Ecrire le diagramme de Conway associé au langage défini par la formule syntaxique suivante :
an bm avec 0 < n < m (on pourra utiliser le fait que ∃ p > 0 tel que bm = bn + p)
2) Expressions (2 points)
1) E → ES → T or T
↓ ↓
F and F F
↓ ↓ ↓
var var var
↓ ↓ ↓
a b c
2) E → ES < ES
↓ ↓
T T
↓ ↓
F F and F
↓ ↓ ↓
variable : a entier : 3 erreur : b=0 n’est pas un facteur
program tri ;
var
d1, d2, d3 : integer ;
begin
if d1 > d2 then
begin
temp := d1; d1 := d2; d2 := temp;
end;
if d1 > d3 then
begin
temp := d1; d1 := d3; d3 := temp;
end;
if d2 > d3 then
begin
temp := d2; d2 := d3; d3 := temp;
end;
end.
Pour obtenir des valeurs aléatoires, on pourra utiliser la fonction random(n) qui retourne un
nombre aléatoire compris entre 0 et n-1.
program miniYams;
var
d1, d2, d3 : integer;
temp : integer;
r : char;
begin
Randomize;
writeln('===Yams===');
repeat
writeln('Nouvelle Partie');
d1 := 1 + random(6);
d2 := 1 + random(6);
d3 := 1 + random(6);
write('d1 : '); readln(d1);
write('d2 : '); readln(d2);
write('d3 : '); readln(d3);
writeln('Valeurs des dés : ', d1, ', ', d2, ', ', d3);
if ((d1 = d2) and (d1 = d3)) then
writeln('Brelan')
else if ((d1 = d2) or (d1 = d3) or (d2 = d3)) then
writeln('Carre')
else
begin
//classement dans l'ordre croissant : cf question 1
if d1 > d2 then
begin
temp := d1; d1 := d2; d2 := temp;
end;
if d1 > d3 then
begin
temp := d1; d1 := d3; d3 := temp;
end;
if d2 > d3 then
begin
temp := d2; d2 := d3; d3 := temp;
end;
readln(r);
until r = 'n';
readln;
end.
Si l’étudiant, tape un autre choix que a, b ou c, vous choisirez une des options suivantes :
• ne pas lui permettre de rentrer un autre choix
• le mettre automatiquement dans le cas a (i.e. s’il ne sait même pas appuyer sur a, b, ou
c, que faire de lui ?)
N.B. : Pour gagner du temps, vous pouvez écrire Q1, Q2, Q3 sans le détail exact des questions.
program test;
var
a, b, c : integer;
choix : char;
begin
a := 0; b := 1 ; c := 1;
writeln('Test - êtes vous fait pour aller en GI -') ;
writeln('Accordez-vous de l''importance à la sociabilité de vos
camarades? a-pas du tout b-un peu c-beaucoup :');
readln(choix);
case choix of
'a' : a := a+1;
'b' : b := b+1;
otherwise c := c+1;
end;
writeln('L''importance de votre salaire à la première embauche
vous importe t-elle? a-pas du tout b-un peu c-beaucoup :');
readln(choix);
case choix of
'a' : a := a+1;
'b' : b := b+1;
otherwise c := c+1;
end;
Début
lire(n)
Pour i allant de 1 à n faire
j←1
k←0
Tant que k < i*i faire
afficher j sur la ligne courante
j ← j+1
k ← k+j
Fin Tant que
Changer de ligne
Fin Pour
Fin
begin
writeln('Veuillez entrer le nombre de lignes :');
readln(n);
for i := 1 to n do begin
j := 1;
k := 0;
while k < i*i do begin
write(j,' ');
j := j + 1;
k := k + j;
end;
writeln;
end;
end.
1
12
123
12345
123456
L'utilisateur doit pouvoir choisir le nombre n de lignes. Votre programme doit vérifier que n ne
dépasse pas la taille maximum NMAX autorisée.
1. Ecrire le programme Pascal correspondant avec NMAX < 10.
N.B. : il y a un seul espace entre deux chiffres.
2. Ecrire le programme Pascal avec (NMAX < 100). L'affichage doit respecter la présentation en
colonne comme dans le cas n=5. Mais pour n = 10 l’affichage devra être le suivant :
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 1
3 4 5 6 7 8 9 10 1 2
…
10 1 2 3 4 5 6 7 8 9
N.B. : vous devez trouver le nombre de chiffres de n afin de pouvoir aligner correctement les
colonnes. Vous pouvez utiliser pour cela les fonctions div et mod.
program iterations;
const
NMAX =100 ;
var
n : integer ;
i,j,k,temp:integer;
begin
repeat
writeln('Nombre de lignes ?');
readln(n);
until n <= NMAX;
temp:=n;
i:=0;
repeat
temp:=temp div(10);
i:=i+1;
until (temp=0);
writeln ('nombre de chiffres : ',i);