Sujets Bac 2008
2 participants
Page 1 sur 1
Sujets Bac 2008
22 Mai 2008 9H:
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher si un entier N saisi (N>9) est divisible par 9 ou non, en appliquant la méthode suivante:
22 Mai 2008 10H 30
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher un code à partir d'un entier N strictement positif et supérieur à 100, selon le principe suivant:
exemple: pour N = 9867, le programme affichera: le code est: 39867
en effet: pour N = 9867:
23 Mai 2008 15H30 (Mastermind):
écrire un programme Pascal qui choisit au hasard un nombre formé de 4 chiffres puis demande à l'uilisateur de le deviner. A chaque proposition, le programme affichera:
Exemple 1: pour le tableau T suivant, avec N=7 et P=5
le programme affiche:6, 4, 2
Exemple 2: pour le tableau T suivant, avec N=7 et P=3
le programme affiche le message:"Condition non vérifiée".
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher si un entier N saisi (N>9) est divisible par 9 ou non, en appliquant la méthode suivante:
- on fait la somme du 1er et du 2ème chiffre de N
- si la somme obtenue est supérieure ou égale à 9, on lui soustrait 9
- on ajoute ensuite à cette somme et on lui applique la règle 2 (on lui retranche 9 si elle est supérieure à 9) et ainsi de suite jusqu'au dernier chiffre de N.
- si le résultat final est nul, le nombre N est alors divisible par 9.
exemple: pour N = 65493 le programme effectuera les opérations suivantes:
6 5 = 11 (11 est supérieur à 9, on lui soustrait 9, on obtient 2)
2 4 = 6 (6 est strictement inférieur à 9)
6 9 = 15 (15 est supérieur à 9, on lui soustrait 9, on obtient 6)
6 3 = 9 (9 >=9, on lui soustrait 9, on obtient 0)
le résultat est nul et tous les chiffres de N ont été traités, donc le nombre 65493 est divisible par 9. en effet, 65493 = 9 * 7277
22 Mai 2008 10H 30
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher un code à partir d'un entier N strictement positif et supérieur à 100, selon le principe suivant:
- calculer la somme S des chiffrres qui composent le nombre N
- recommencer le calcul de la somme des chiffres de la somme obtenue S tant que celle-ci n'est pas comprise entre 1 et 9
- le code sera le nombre formé par N auquel on place à sa gauche la dernière somme obtenue.
exemple: pour N = 9867, le programme affichera: le code est: 39867
en effet: pour N = 9867:
- la 1ère somme S vaut 30 ( car 9+ 8+ 6+ 7 = 30)
- la 2ème somme vaut 3 (car 3+ 0=3)
- Etant donné que la dernière somme S, qui vaut 3, est comprise entre 1 et 9, le code sera 39867
23 Mai 2008 15H30 (Mastermind):
écrire un programme Pascal qui choisit au hasard un nombre formé de 4 chiffres puis demande à l'uilisateur de le deviner. A chaque proposition, le programme affichera:
- le nombre de chiffres bien placés (BP)
- le nombre de chiffres mal placés (MP)
le programme s'arrête lorsque la combinaison a été trouvée ou bien lorsque le nombre maximum d'essais NBES a été atteint (NBES = 10).
exemple: pour le nombre secret 1437, et les propositions suivantes, le programme affichera:
votre proposition: 1234
2BP 1MP
votre proposition: 2345
0BP 2MP
votre proposition: 4567
1BP 1MP
votre proposition: 1467
3BP 0MP
votre proposition: 1437
4BP 0MP
Vous avez trouvé en 5 coups.
23 Mai 2008 10H 30:
on se propose de ranger dans un tableau V les numéros des cartes d'identité nationale des N élèves d'un lycée. Deux élèves ne peuvent pas avoir un même numéro de carte d'identité nationale. Un numéro de carte d'identité est composé obligatoirement de huits chiffres. Ecrire un programme Pascal qui permet de saisir les numéros de cartes d'identité des N élèves du lycée puis de les afficher.
22 Mai 2008 14H:
Ecrire un programme Pascal qui permet de: - remplir un tableau T, d'une façon automatique et aléatoire, par N entiers strictement positifs, inférieurs ou égaux à 1000, avec (5 <= N <= 30)
- vérifier pour l'élément de T d'indice P donné, s'il est égale à la somme d'un certains nombre d'éléments consécutifs de T qui le précèdent immédiatement. Dans ce cas, le programme affiche ces éléments, sinon il affiche "Condition non vérifiée".
Exemple 1: pour le tableau T suivant, avec N=7 et P=5
3 | 2 | 4 | 6 | 12 | 18 | 20 |
le programme affiche:6, 4, 2
Exemple 2: pour le tableau T suivant, avec N=7 et P=3
3 | 2 | 4 | 6 | 12 | 18 | 20 |
Dernière édition par Admin le Ven 27 Mar - 18:53, édité 1 fois
Correction 22 Mai 2008 9H:
program mai22_08_9h;
uses wincrt;
var
n:longint;
procedure saisie(var n:longint);
begin
repeat
writeln('saisir n>9');
readln(n);
until (n>9);
end;
function somme (x,y:integer):integer;
var s:integer;
begin
s:=x+y;
while (s>=9) do
s:=s-9;
somme:=s;
end;
function calcul(n:longint):integer;
var
ch:string;
a,b,som,e,i:integer;
begin
str(n,ch);
val(ch[1],a,e);
val(ch[2],b,e);
som:=somme(a,b);
for i:=3 to length(ch) do
begin
val(ch[i],a,e);
som:=somme(som,a);
end;
calcul:=som;
end;
{pp}
begin
saisie(n);
if (calcul(n)=0)then
writeln(n,' est divisible par 9')
else
writeln(n,' n''est pas divisible par 9');
end.
uses wincrt;
var
n:longint;
procedure saisie(var n:longint);
begin
repeat
writeln('saisir n>9');
readln(n);
until (n>9);
end;
function somme (x,y:integer):integer;
var s:integer;
begin
s:=x+y;
while (s>=9) do
s:=s-9;
somme:=s;
end;
function calcul(n:longint):integer;
var
ch:string;
a,b,som,e,i:integer;
begin
str(n,ch);
val(ch[1],a,e);
val(ch[2],b,e);
som:=somme(a,b);
for i:=3 to length(ch) do
begin
val(ch[i],a,e);
som:=somme(som,a);
end;
calcul:=som;
end;
{pp}
begin
saisie(n);
if (calcul(n)=0)then
writeln(n,' est divisible par 9')
else
writeln(n,' n''est pas divisible par 9');
end.
Correction 23 Mai 08 10h30
program mai23_08_10h30;
uses wincrt;
type
tab = array[1..30]of string[8];
var
t:tab;
i,n:integer;
procedure saisie( var n:integer);
begin
repeat
writeln('saisir n');
readln(n);
until n in [4..30];
end;
function verif (ch:string):boolean;
var j:integer;
begin
j:=1;
while (ch[j] in ['0'..'9']) and (j<8)do
begin
j:=j+1;
end;
verif := ch[j] in ['0'..'9'];
end;
function exist (t:tab;i:integer):boolean;
var
j:integer;
begin
j:=0;
repeat
j:=j+1;
until (t[j] = t[i]) or (j=i-1);
exist:=t[i] = t[j];
end;
procedure remplir(var t:tab; n:integer);
begin
repeat
write('saisir t[1]= ');
readln(t[1]);
until (length(t[1])=8 and (verif (t[1]));
for i:=2 to n do
repeat
write('saisir t[',i,']= ');
readln(t[i]);
until (length(t[i])=8 and (verif(t[i])) and not(exist(t,i)) ;
end;
procedure affichage(t:tab; n:integer);
begin
for i:=1 to n do
writeln('t[',i,']= ',t[i]);
end;
{pp}
begin
saisie(n);
remplir(t,n);
affichage(t,n);
end.
uses wincrt;
type
tab = array[1..30]of string[8];
var
t:tab;
i,n:integer;
procedure saisie( var n:integer);
begin
repeat
writeln('saisir n');
readln(n);
until n in [4..30];
end;
function verif (ch:string):boolean;
var j:integer;
begin
j:=1;
while (ch[j] in ['0'..'9']) and (j<8)do
begin
j:=j+1;
end;
verif := ch[j] in ['0'..'9'];
end;
function exist (t:tab;i:integer):boolean;
var
j:integer;
begin
j:=0;
repeat
j:=j+1;
until (t[j] = t[i]) or (j=i-1);
exist:=t[i] = t[j];
end;
procedure remplir(var t:tab; n:integer);
begin
repeat
write('saisir t[1]= ');
readln(t[1]);
until (length(t[1])=8 and (verif (t[1]));
for i:=2 to n do
repeat
write('saisir t[',i,']= ');
readln(t[i]);
until (length(t[i])=8 and (verif(t[i])) and not(exist(t,i)) ;
end;
procedure affichage(t:tab; n:integer);
begin
for i:=1 to n do
writeln('t[',i,']= ',t[i]);
end;
{pp}
begin
saisie(n);
remplir(t,n);
affichage(t,n);
end.
Re: Sujets Bac 2008
22 Mai 2008 10H 30
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher un code à partir d'un entier N strictement positif et supérieur à 100, selon le principe suivant:
exemple: pour N = 9867, le programme affichera: le code est: 39867
en effet: pour N = 9867:
program espoir bac;
uses wincrt;
var
n:integer;
ch:string;
procedure saisie(var n:integer);
begin
repeat
writeln('n=');
readln(n);
until (n>0) and( n>100); si n>100 alors n>0
end;
ction calcul ( var n:integer):string;
var
i,a,e,s:integer;
ch,c,nb:string;
begin
str(n,ch);
for i:= 1 to length(ch) do
begin
repeat
val(ch[i],a,e);
s:=0;
s:=s+a;
until s in[1..9];
str(s,c);
nb:=c+ch;
end;
calcul:=nb;
end;
begin
saisie(n);
writeln('le code est',calcul(n))
end.
correction
program espoirbac;
uses wincrt;
var
n:integer;
ch:string;
procedure saisie(var n:integer);
begin
repeat
writeln('n=');
readln(n);
until ( n>100);
end;
function calcul ( var n:integer):string;
var
i,a,e,s:integer;
ch,c,nb:string;
begin
str(n,ch);
repeat
s:=0;
for i:= 1 to length(ch) do
begin
val(ch[i],a,e);
s:=s+a;
end;
str(s,ch);
until s in[1..9];
str(n,c);
calcul:=ch+c;;
end;
begin
saisie(n);
writeln('le code est',calcul(n))
end.
on se propose d'écrire un programme Pascal permettant de déterminer et d'afficher un code à partir d'un entier N strictement positif et supérieur à 100, selon le principe suivant:
- calculer la somme S des chiffrres qui composent le nombre N
- recommencer le calcul de la somme des chiffres de la somme obtenue S tant que celle-ci n'est pas comprise entre 1 et 9
- le code sera le nombre formé par N auquel on place à sa gauche la dernière somme obtenue.
exemple: pour N = 9867, le programme affichera: le code est: 39867
en effet: pour N = 9867:
- la 1ère somme S vaut 30 ( car 9+ 8+ 6+ 7 = 30)
- la 2ème somme vaut 3 (car 3+ 0=3)
- Etant donné que la dernière somme S, qui vaut 3, est comprise entre 1 et 9, le code sera 39867
suggestion :
program espoir bac;
uses wincrt;
var
n:integer;
ch:string;
procedure saisie(var n:integer);
begin
repeat
writeln('n=');
readln(n);
until (n>0) and( n>100); si n>100 alors n>0
end;
ction calcul ( var n:integer):string;
var
i,a,e,s:integer;
ch,c,nb:string;
begin
str(n,ch);
for i:= 1 to length(ch) do
begin
repeat
val(ch[i],a,e);
s:=0;
s:=s+a;
until s in[1..9];
str(s,c);
nb:=c+ch;
end;
calcul:=nb;
end;
begin
saisie(n);
writeln('le code est',calcul(n))
end.
correction
program espoirbac;
uses wincrt;
var
n:integer;
ch:string;
procedure saisie(var n:integer);
begin
repeat
writeln('n=');
readln(n);
until ( n>100);
end;
function calcul ( var n:integer):string;
var
i,a,e,s:integer;
ch,c,nb:string;
begin
str(n,ch);
repeat
s:=0;
for i:= 1 to length(ch) do
begin
val(ch[i],a,e);
s:=s+a;
end;
str(s,ch);
until s in[1..9];
str(n,c);
calcul:=ch+c;;
end;
begin
saisie(n);
writeln('le code est',calcul(n))
end.
ameni hlaili- Messages : 12
Date d'inscription : 06/01/2009
Age : 33
Re: Sujets Bac 2008
23 Mai 2008 15H30 (Mastermind):
écrire un programme Pascal qui choisit au hasard un nombre formé de 4 chiffres puis demande à l'uilisateur de le deviner. A chaque proposition, le programme affichera:
écrire un programme Pascal qui choisit au hasard un nombre formé de 4 chiffres puis demande à l'uilisateur de le deviner. A chaque proposition, le programme affichera:
- le nombre de chiffres bien placés (BP)
- le nombre de chiffres mal placés (MP)
le programme s'arrête lorsque la combinaison a été trouvée ou bien lorsque le nombre maximum d'essais NBES a été atteint (NBES = 10).
exemple: pour le nombre secret 1437, et les propositions suivantes, le programme affichera:
votre proposition: 1234
2BP 1MP
votre proposition: 2345
0BP 2MP
votre proposition: 4567
1BP 1MP
votre proposition: 1467
3BP 0MP
votre proposition: 1437
4BP 0MP
Vous avez trouvé en 5 coups. - je voudrais bien avoir la solution de ce sujet!
- merci d' avance!
ameni hlaili- Messages : 12
Date d'inscription : 06/01/2009
Age : 33
Re: Sujets Bac 2008
22 Mai 2008 14H:
Ecrire un programme Pascal qui permet de:
remplir un tableau T, d'une façon automatique et aléatoire, par N entiers strictement positifs, inférieurs ou égaux à 1000, avec (5 <= N <= 30)
vérifier pour l'élément de T d'indice P donné, s'il est égale à la somme d'un certains nombre d'éléments consécutifs de T qui le précèdent immédiatement. Dans ce cas, le programme affiche ces éléments, sinon il affiche "Condition non vérifiée".
Exemple 1: pour le tableau T suivant, avec N=7 et P=5
le programme affiche:6, 4, 2
Exemple 2: pour le tableau T suivant, avec N=7 et P=3
le programme affiche le message:"Condition non vérifiée".
program bacreussite;
uses wincrt;
type
tab= array[1..1000] of integer;
var
n:integer;
t:tab;
procedure saisie(var n:integer);
begin
repeat writeln('n=');
readln(n);
until n in [5..30];
end;
procedure remplir ( var t:tab);
var
i: integer;
begin
for i:=1 to n do
begin
randomize ;
writeln('t[',i,']=');
readln(t[i]);
end;
end;
procedure traitement(var t:tab;n :integer);
var
p,i,a:integer;
begin
writeln('p=');
readln(p);
a:=p+1;
for i:=1 to n do
begin
if (a =t[i]) and (a=t[i]+1) then
writeln('condition vérifiée')
else writeln('non vérif.');
end;
end;
begin
saisie(n);
remplir(t);
traitement(t,n);
end.
malheuresement !j'ai pas compris le sujet!
Ecrire un programme Pascal qui permet de:
Exemple 1: pour le tableau T suivant, avec N=7 et P=5
3 | 2 | 4 | 6 | 12 | 18 | 20 |
le programme affiche:6, 4, 2
Exemple 2: pour le tableau T suivant, avec N=7 et P=3
3 | 2 | 4 | 6 | 12 | 18 | 20 |
program bacreussite;
uses wincrt;
type
tab= array[1..1000] of integer;
var
n:integer;
t:tab;
procedure saisie(var n:integer);
begin
repeat writeln('n=');
readln(n);
until n in [5..30];
end;
procedure remplir ( var t:tab);
var
i: integer;
begin
for i:=1 to n do
begin
randomize ;
writeln('t[',i,']=');
readln(t[i]);
end;
end;
procedure traitement(var t:tab;n :integer);
var
p,i,a:integer;
begin
writeln('p=');
readln(p);
a:=p+1;
for i:=1 to n do
begin
if (a =t[i]) and (a=t[i]+1) then
writeln('condition vérifiée')
else writeln('non vérif.');
end;
end;
begin
saisie(n);
remplir(t);
traitement(t,n);
end.
malheuresement !j'ai pas compris le sujet!
ameni hlaili- Messages : 12
Date d'inscription : 06/01/2009
Age : 33
correction sujet Mastermind (23 Maï 2008 15H30)
solution proposée par un élève:
program devine;
uses wincrt;
var
x,p,nbes:integer;
procedure hasard(var x:integer);
begin
randomize;
x:=random(9000)+1000;
end;
procedure prop(var p:integer);
begin
repeat
writeln('votre proposition STP');
readln(p);
until (p>=1000) and (p<=9999);
end;
procedure traitement(x:integer;var nbes:integer);
var bp,mp,i:integer;
x1,p1:string;
begin
nbes:=0;
str(x,x1);
repeat
bp:=0; mp:=0;
prop(p);
str(p,p1);
for i:=1 to 4 do
if x1[i]=p1[i] then
bp:=bp+1
else
if (pos(p1[i],x1)<>0) then
mp:=mp+1;
writeln(bp,' bp ',mp,' mp');
nbes:=nbes+1;
until (x1=p1) or (nbes=10);
end;
procedure affichage(x,p,nbes:integer);
begin
if (x=p) then
writeln('vous avez trouvé en ',nbes,' coups')
else
writeln('désolé le nombre est: ',x);
end;
begin
hasard(x);
traitement(x,nbes);
affichage(x,p,nbes);
end.
program devine;
uses wincrt;
var
x,p,nbes:integer;
procedure hasard(var x:integer);
begin
randomize;
x:=random(9000)+1000;
end;
procedure prop(var p:integer);
begin
repeat
writeln('votre proposition STP');
readln(p);
until (p>=1000) and (p<=9999);
end;
procedure traitement(x:integer;var nbes:integer);
var bp,mp,i:integer;
x1,p1:string;
begin
nbes:=0;
str(x,x1);
repeat
bp:=0; mp:=0;
prop(p);
str(p,p1);
for i:=1 to 4 do
if x1[i]=p1[i] then
bp:=bp+1
else
if (pos(p1[i],x1)<>0) then
mp:=mp+1;
writeln(bp,' bp ',mp,' mp');
nbes:=nbes+1;
until (x1=p1) or (nbes=10);
end;
procedure affichage(x,p,nbes:integer);
begin
if (x=p) then
writeln('vous avez trouvé en ',nbes,' coups')
else
writeln('désolé le nombre est: ',x);
end;
begin
hasard(x);
traitement(x,nbes);
affichage(x,p,nbes);
end.
ameni hlaili- Messages : 12
Date d'inscription : 06/01/2009
Age : 33
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|