• Aucun résultat trouvé

Correction DS3 2011

N/A
N/A
Protected

Academic year: 2022

Partager "Correction DS3 2011"

Copied!
6
0
0

Texte intégral

(1)

Exercice 1 :

program ex1_ds3;

uses wincrt;

var

a,b:longint;

procedure saisie(var a,b:longint);

begin repeat

write('Donner a suivie de b ');

readln(a,b);

until (a>2) and (a<b) and(b<50000);

end;

function premier(n:integer):boolean;

var

test:boolean;

i:integer;

begin i:=1;

repeat i:=i+1;

if n mod i=0 then test:=false else test:=true;

until (test=false) or (i=n div 2);

premier:=test;

end;

function puiss(x,y:integer):longint;

var i:integer;

p:longint;

begin p:=1;

for i:=1 to y do p:=p*x;

puiss:=p;

end;

procedure affiche ; var

i,n:integer;

test:boolean;

begin

for i:= a to b do begin

n:=0;

Correction DS3

2011

(2)

repeat n:=n+1;

if (i=puiss(2,n)-1) and (premier(n)) then test:=true else test:=false;

until (test)or(puiss(2,n)-1>i);

if test then writeln(i,' = 2^',n,' - 1 ');

end;

end;

begin saisie(a,b);

affiche;

end.

Exercice 2 :

program ex2_ds3;

uses wincrt;

var x,un,i:integer;

procedure saisie (var x:integer);

begin repeat

writeln ('saisir l''entier x');

readln (x);

until (x>2);

end;

procedure calcul (var Un,i:integer;x:integer);

var

U0,U1:integer;

begin U0:=2;

U1:=3;

i:=2;

repeat

Un:=U1+2*U0;

U0:=U1;

U1:=Un;

i:=i+1;

until U1>= x;

if u1=x then writeln(x,' est un terme de la suite Un au rang ',i) else writeln(x,' n''est pas un terme de la suite Un ') ;

end;

begin saisie(x);

(3)

calcul(un,i,x);

end.

Exercice 3 :

Program ex3_ds3;

Uses Wincrt;

Var

Pas:Real;

Function Valeur_X (Pas:Real):Real;

Var

X, T, Xmax, Tmin:real;

Begin

Xmax:=0; Tmin:=6.75;

Repeat X:=X+Pas;

T:=Sqrt(sqr(X)+81)/3+(15-X)/4;

If Tmin > T Then Begin Xmax:=X;

Tmin:=T;

End;

Until (X>=15);

Valeur_X:=Xmax;

End;

BEGIN

Write ('Donner le pas : '); Readln (Pas);

Write ('La valeur maximale de x est : ', Valeur_X (Pas));

END.

Problème :

program matrice_tri_minmax_pgcdppcm;

uses wincrt;

type

mat=array[1..10,1..10]of integer;

tab=array[1..10] of integer;

var

m:mat; t:tab; var i,n:integer;

procedure saisie(var m:mat; var n:integer);

(4)

var

i,j:integer;

begin repeat

write('Donner la taille de la matrice ');

readln(n) ; until n in [4..8] ; for i:= 1 to n do for j:= 1 to n do begin

write('m[',i,'][',j,']=');

readln(m[i][j]);

end;

end;

function puissance(x,y:integer):integer;

var

i,p:integer;

begin p:=1;

for i:=1 to y do p:=p*x;

puissance:=p;

end;

procedure creer_t(var t:tab);

var i,j,s:integer; begin for i:= 1 to n do

begin s:=0;

for j:= n downto 1 do

s:=s+m[i][j]*puissance(2,n-j);

t[i]:=s;

end;

for i:= 1 to n do write(t[i],' ');

end;

Procedure Tri_insertion( var t : tab);

var i, j, k : integer;

begin

for i:=2 to n do begin

k := t[i]; (* k est la valeur à insérer dans l'endroit approprié du tableau *)

(* On décale toutes les valeurs du tableau < k à droite pour vider une place pour k *)

j := i - 1;

while (j >= 1) and (t[j] < k) do begin

(5)

t[j + 1] := t[j];

j := j - 1;

end;

(* finalement la valeur k est insérée à son emplacement adéquat *)

t[j + 1] := k;

end;

end;

function ppcm(a,b:integer):integer;

var

min,max:integer;

begin if a>b then begin max:=a;

min:=b;

end else begin min:=a;

max:=b;

end;

while (max mod min <>0) do max:=max+a+b-min;

ppcm:=max;

end;

function pgcd(a,b:integer):integer;

begin

while (a mod b<>0) and (b mod a <>0) do begin

if (a>b) then a:=a mod b else

b:=b mod a;

end;

if (a mod b = 0) then pgcd:=b

else pgcd:=a;

end;

function min:integer;

var

i,m:integer;

begin m:=t[1];

for i:=1 to n do

(6)

if t[i]<m then m:=t[i];

min:=m;

end;

function max:integer;

var

i,m:integer;

begin m:=t[1];

for i:=1 to n do if t[i]>m then m:=t[i];

max:=m;

end;

begin saisie(m,n);

writeln('Le tableau t sera de cette forme ');

creer_t(t);

writeln;

tri_insertion(t);

for i:=1 to n do write(t[i],' ');

writeln;

writeln('Min= ',min);

writeln('Max= ',max);

writeln('PGCD(min,max)= ',pgcd(min,max));

writeln('PPCM(min,max)= ',ppcm(min,max));

end.

Références

Documents relatifs

[r]

Les groupements donneurs diminuent l’acidité et augmentent

[r]

3) La lumière blanche est une lumière monochromatique. FAUX : La lumière blanche est une lumière polychromatique. 4) Les longueurs d'onde des raies d'émission d'un gaz

1) L’atome d’oxygène (O) se trouve dans la sixième colonne, deuxième période (ligne) de la classification périodique : Quel ion peut-il former ? Justifier. - sixième colonne :

Ont leurs corps cellulaires situés dans la substance grise de la moelle épinière BC. Sont reliés aux fuseaux neuromusculaires par leurs terminaisons dendritiques

Petits problèmes ( justifier toutes les réponses par un calcul ; écrire une phrase réponse ).. a) Pour fabriquer 1 L de glace, on

[r]