Rayene 2
Rayene 2
Rayene 2
Début
(...)
Afini ← faux
Bfini ← faux
ia ← 0
ib ← 0
ic ← -1
TantQue Non(Afini) ou Non(Bfini)
ic ← ic + 1
Redim C(ic)
Si Afini ou A(ia)>B(ib) Alors
C(ic) ← B(ib)
ib ← ib + 1
Bfini ← ib > n
Sinon
C(ic) ← A(ia)
ia ← ia + 1
Afini ← ia > m
FinSi
FinTantQue
Fin
1 2 3 4 5 6
T
3 7 12 20 35 50
1
1 2 3 4
T
1 5 15 18
2
Résultat de la fusion :
1 2 3 4 5 6 7 8 9 10
T 1 3 5 7 12 15 18 20 35 50
Exercice 19 Une classe est composée de 30 élèves. Le professeur d'arabe Mr Najib veut utiliser
l'ordinateur pour faire la moyenne trimestrielle et le rang de ses élèves. Sachant que la moyenne =
(note1+2*note2)/3, Mr Najib veut afficher les résultats sous forme d'un tableau comportant : Nom
Prénom Note 1 Note2 Moyens Rangs ………… ………… ………… ………… ………… ………… ………… …………
………… ………… ………… …………
Exercice 19
Program TRI_SELECTION ;
Begin
posmin := j ; IF i<> posmin Then Begin tmp := T[i] ; T[i] := T[posmin] ; T[posmin] := tmp ; End ; End ;
Writeln ('Tableau trié :'); FOR i := 1 TO n DO Writeln (T[i]) ; End.
Exercice 22
program tri_2_criteres; uses wincrt,ecran; const n=10; type tab=array[1..n] of string; var t:tab;
i,j,pos:integer; aux:string; begin writeln('Remplir T :'); for i:=1 to n do repeat write('ch = '); readln(t[i]);
until t[i]<>''; (***************************) for i:=1 to n-1 do begin pos:=i; for j:=i+1 to n do if
(length(t[j])<>pos then begin aux:=t[i] ; t[i]:=t[pos]; t[pos]:=aux; end; end;
(****************************) for i:=1 to n do writeln (t[i]); end.
Exercice 23
Program tri_bulles_bidirectionnel; uses wincrt; type tab=array[1..25] of integer; var t:tab; n:integer;
(********************************************) procedure saisir(var n:integer); begin repeat
writeln('Donner un entier entre 5 et 25'); readln(n); until n in [5..25]; end;
(********************************************) procedure remplir (var t:tab ; n:integer); var
i:integer; begin randomize; for i:=1 to n do T[i]:=1+random(100); end;
(********************************************) procedure trier (var T:tab ;n:integer); var
i,j,aux:integer; permut:boolean; (**********************) begin j:=0; repeat permut:=false; j:=j+1;
for i:=j to n-1 do if t[i]>t[i+1] then begin aux:=T[i]; T[i]:=T[i+1]; T[i+1]:=aux; permut:=true; end; if
permut = true then begin permut:=false; for i:=n-1 downto j+1 do if t[i]=n); end;
(*********************************************) procedure afficher(T:tab ; n:integer); var
i:integer; begin for i:=1 to n do write(T[i],' '); end; (******************* P.P.
**********************) BEGIN saisir(n); remplir(t,n); writeln('Tableau avant le tri :'); afficher(t,n);
trier(t,n); writeln; writeln('Tableau après le tri :'); afficher(t,n); END.
Exercice 24
Exercice 25
Program fusion_2_tab; uses wincrt; type tab1=array [1..20] of integer; tab2=array [1..40] of integer;
var v1,v2:tab1; v3:tab2; n,m,c:integer; (*******************************************)
procedure lecture (var taille:integer); begin repeat readln(taille); until taille in [2..20]; end;
(********************************************) procedure remplir (var t:tab1; taille:integer);
var i:integer; begin for i:= 1 to taille do readln(t[i]); end;
(********************************************) procedure trier (taille:integer;var t:tab1); var
i,tmp, min,j:integer; begin for i:=1 to taille-1 do begin min:=i; for j:=i+1 to taille do if t[j]<>min then
begin tmp:=t[i]; t[i]:=t[min]; t[min]:=tmp; end; end; end;
(********************************************) procedure fusionner (v1,v2:tab1; var v3:tab2;
n,m:integer; var c:integer); var i,c1,c2:integer; begin c1:=1; c2:=1; c:=0; repeat c:=c+1; if v1[c1]n) or
(c2>m); if c1>n then for i:=c2 to m do begin c:=c+1; v3[c]:=v2[i]; end else for i:=c1 to n do begin
c:=c+1; v3[c]:=v1[i]; end; end; (********************************************) procedure
afficher (t:tab2; taille:integer); var i:integer; begin writeln('Tableau fusion :'); for i:= 1 to taille do
write (t[i]:4); end; (**********************P.P*********************) begin write ('Taille du
tableau V1 : '); lecture (n); write ('Taille du tableau V2 : '); lecture (m); writeln ('Remplir le tableau
V1 :'); remplir (v1,n);
writeln ('Remplir le tableau V2 :'); remplir (v2,m); trier (n,v1); trier (m,v2); fusionner (v1,v2,v3,n,m,c);
afficher (v3,c);
end.