bac pratique 2005
Page 1 sur 1
bac pratique 2005
ÉNONCÉ:
Ecrire un programme Pascal intitulé Div_Mult permettant d'accomplir les tâches
suivantes :
Remplir un tableau T par N entiers positifs (5<N<20).
Pour un élément d'indice p donné, de T, placer dans un autre tableau V :
• tous les diviseurs de l'élément d'indice p sauf lui même, s'ils existent dans le
tableau T, au début d'un tableau V.
• l'élément d'indice p.
• tous les multiples de l'élément d'indice p sauf lui même, s'ils existent dans le
tableau T, à sa droite.
Remplacer le reste des éléments de V par -1 et l'afficher.
Exemple:
Pour p = 1 et le tableau T suivant :
12 / 2 / 0 / 6 / 9 / 48 / 3 / 24 / 10
Le programme affichera le tableau V suivant :
2 /6 / 3 / 12 / 0 / 48 / 24 / -1 / -1
N.B : La solution doit comporter au moins deux modules.
Ecrire un programme Pascal intitulé Div_Mult permettant d'accomplir les tâches
suivantes :
Remplir un tableau T par N entiers positifs (5<N<20).
Pour un élément d'indice p donné, de T, placer dans un autre tableau V :
• tous les diviseurs de l'élément d'indice p sauf lui même, s'ils existent dans le
tableau T, au début d'un tableau V.
• l'élément d'indice p.
• tous les multiples de l'élément d'indice p sauf lui même, s'ils existent dans le
tableau T, à sa droite.
Remplacer le reste des éléments de V par -1 et l'afficher.
Exemple:
Pour p = 1 et le tableau T suivant :
12 / 2 / 0 / 6 / 9 / 48 / 3 / 24 / 10
Le programme affichera le tableau V suivant :
2 /6 / 3 / 12 / 0 / 48 / 24 / -1 / -1
N.B : La solution doit comporter au moins deux modules.
solution de bac 2005
program div_mul;
uses wincrt;
type
tab=array[1..20] of integer;
var
v,t:tab;
x,y,p,j,i,n:integer;
procedure saisie(var t:tab;var n:integer);
begin
repeat
writeln('saisir n');
readln(n);
until n in [1..20];
for i:=1 to n do begin
repeat
writeln('saisir une valeur',i);
readln(t[i]);
until t[i]>=0;
end;
end;
procedure affichage(v:tab;n:integer);
begin
writeln('voila le contenu du tableau V');
for i:=1 to n do writeln(v[i]);
end;
begin
saisie(t,n);
repeat
writeln('donner un indice');
readln(p);
until p in [1..n];
j:=1;
y:=t[p];
for i:=1 to n do begin
x:=t[i];
if (y mod t[i] =0) and (y<>t[i]) and (x<>0) then
begin
v[j]:=t[i];j:=j+1;end; end;
v[j]:=t[p];j:=j+1;
for i:=1 to n do
if (t[i] mod y =0) and (t[i]<>y) and (y<>0) then begin v[j]:=t[i];j:=j+1;end;
for i:=j to n do v[i]:=-1;
affichage(v,n);
end.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum