Vous êtes sur la page 1sur 5

1- Procédure saisir d’un entier

Sans condition Avec condition

Procedure saisir (var N :integer) ; Procedure saisir (var N :integer) ;


Begin Begin
Repeat
Writeln('donner N'); readln(N); Writeln(' donner N '); readln(N);
End; Until( condition);
End;

2- Procédure saisir d’un intervalle 3- Saisir une chaine formée au maximum


1<a<b≤50 de 5 caractères et contenant au moins un
espace
Procedure saisir (var a,b :integer) ; Procedure saisir (var ch:string) ;
Begin Begin
Repeat Repeat
Writeln(' donner a '); readln(a); Writeln(' donner votre chaine '); readln(ch);
Writeln(' donner b '); readln(b); Until(length(ch)<=5) and (pos(‘ ‘,ch)<>0);
Until(a>1) and (a<b) and (b<=50); End;
End;

4- Procédure remplir un tableau T


Sans condition Avec condition
Procedure remplir (var T:tab; N :integer) ; Procedure remplir (var T:tab; N :integer) ;
Var i:integer; Var i:integer;
Begin Begin
For i:=1 to N do For i:=1 to N do
begin repeat
Writeln(' T[ ', i , ' ] '); readln(T[i]); Writeln(' T[ ', i , ' ] '); readln(T[i]);
end; until(condition);
End; End;

5- Procédure remplir un tableau T de 6- Procédure remplir un tableau T de


façon aléatoire T[i]  [2..10] façon croissante
Procedure remplir (var T:tab; N :integer) ;
Procedure remplir (var T:tab; N :integer) ; Var i:integer;
Var i:integer; Begin
Begin Writeln(' donner le premier élément ');
For i:=1 to N do readln(T[1]);
T[i] := random(9)+2;
End; For i:=2 to N do
repeat
Writeln(' donner un element ', i); readln(T[i]);
until(T[i] >T[i-1]);
End;

Mr. ANIS ELBAHI 4SCX-MAT-TECH Page 1


7- Procédure remplir un tableau T par 8- Procédure initialiser un tableau T par des
des éléments distincts 1

Procedure remplir (var T:tab ; N :integer) ;


Procedure remplir (var T:tab;N:integer); Var i:integer;
Var i,j,nb:integer;
Begin
For i:=1 to N do
Begin T[i] := 1;
Writeln('donner le premier élément '); End;
readln(T[1]);

For i:=2 to N do 9- Remplir un tableau T par des


Repeat caractères alphabétiques MAJUSCULES
Writeln(' T[ ', i , ' ] '); de façon aléatoires
Procedure remplir (var T:tab; N :integer) ;
readln(T[i]); Var i,x:integer;
nb:=0;
Begin
For j :=1 to i-1 do Randomize;
if(T[j] = T[i]) then nb:=nb+1;
Until( nb=0); For i:=1 to N do
begin
x:=random(26)+65;
End; T[i]:=chr(x);
End;
End;

10- Afficher tous les éléments d’un tableau T : 11- Afficher les éléments d’un tableau qui sont
(Affichage sans condition) pairs (Affichage avec condition)
Procedure affiche (T:tab; N :integer) ; Procedure affiche ( T:tab; N :integer) ;
Var i:integer; Var i:integer;

Begin Begin
For i:=1 to N do For i:=1 to N do
Writeln(T[i]); if(T[i] mod 2 = 0) then writeln(T[i]);
End; End;

12- Afficher tous les éléments de la 13- Afficher les éléments qui se trouvent
deuxième moitié d’un tableau T. dans les positions impaires d’un tableau
T en commençant par le dernier élément
Procedure affiche (T:tab; N :integer) ; Procedure affiche (T:tab; N :integer) ;
Var i:integer; Var i:integer;
Begin Begin
For i:=(N div 2) to N do For i:=N downto 1 do
Writeln(T[i]); if (i mod 2 <> 0 ) then Writeln(T[i]);
End; End;

Mr. ANIS ELBAHI 4SCX-MAT-TECH Page 2


14- Calculer le nombre des éléments positifs 15- Calculer le factoriel d’un entier X
dans un tableau T X !=1*2*3*…*X

Function nombre(T:tab; N:integer): integer; Function FACT (X:integer): longint;


Var i,nb:integer; Var i:integer; F:longint;
Begin Begin
nb:=0; F:=1;
For i:=1 to N do
For i:=1 to N do F:=F*i;
If(T[i] >=0 ) then nb:=nb+1;
FACT:=F;
Nombre:=nb; End;
End;

16 - Calculer la somme des éléments d’une liste 17 - Construire une chaine de caractères à
Par exemple calculer la somme des codes ascii l’envers
des caractères d’une chaine. Exemple : CH=’ANIS’
la chaine à l’envers est S=’SINA’
Function calcul(ch:string): integer; Function envers(ch:string): string;
Var s,i:integer; Var i:integer; S:string;
Begin Begin
S:=0; S:= '';
For i:=1 to length(ch) do For i:=1 to length(ch) do
S:=S+ord(ch[i]); S:=ch[i]+S;
Calcul:=S; envers:=S;
End; End;

18- Vérifier si un élément X existe ou non dans 19- Calculer X à la puissance Y


le tableau T 23=2*2*2=8

Function verif(T:tab; N,X:integer): boolean; Function PUIS (X,Y:integer): longint;


Var i:integer; ok:boolean; Var i:integer; P:longint;

Begin Begin
i:=0; ok:=false; P:=1;
Repeat For i:=1 to Y do
i:=i+1; P:=P*X;
if(T[i] = X) then ok:=true;
Until(ok=true) or (i=N); PUIS:=P;
Verif := ok; End;
End;

Mr. ANIS ELBAHI 4SCX-MAT-TECH Page 3


20- Trier un tableau T (de N entiers) de façon 21 - Chercher la position du minimum d’un
croissante en utilisant le tri à bulles tableau T

Procedure tri_b(var t:tab; N:integer); Function POSMIN(t:tab; n:integer) : integer;


Var i,aux:integer; ok:Boolean; Var pm,i : integer ;
Begin
Repeat Begin
Ok:=false; pm :=1 ;
For i :=2 to N do
For i:=1 to N-1 do if T[i]<T[pm] then
If(T[i]>T[i+1] then pm:=i;
Begin
Aux:=T[i]; POSMIN:=pm;
T[i]:=T[i+1]; End ;
T[i+1] :=aux ;
OK := true ;
End;
N:=N-1;
Until(N=1) or (OK= false);
End;

22- Remplir un tableau R par les éléments


strictement positifs qui se trouvent dans un 23 - Afficher si la somme des chiffres d’un
tableau T puis par les éléments strictement entier formé de 4 chiffres est multiple de 5.
négatifs qui se trouvent dans le même tableau T.

Procedure remplir(var R:tab; T:tab; n:integer); Procedure affiche (X :integer) ;


Var i,k:integer; Var M,C,D,U : integer;

Begin Begin
k:=1; M:=X div 1000;
For i:=1 to N do C:=(X mod 1000) div 100;
if(T[i]>0) then D:= (X mod 100) div 10 ;
begin U:=X mod 10;
R[k]:=T[i];
k:=k+1; if (M+C+D+U) mod 5 = 0 then
end; write(' somme multiple de 5 ') else
write(' somme non multiple de 5 ');
For i:=1 to N do End ;
if(T[i]<0) then
begin
R[k]:=T[i];
k:=k+1;
end;

End;

Mr. ANIS ELBAHI 4SCX-MAT-TECH Page 4


24 - Trier un tableau T (de N entiers) de façon 25- Saisir une chaine formée uniquement par
décroissante en utilisant le tri par sélection des caractères alphabétiques.

Procedure tri_s(var t:tab; N:integer); procedure saisir(var ch:string);


Var i, j,pm, aux:integer; var nb,i:integer;
Begin
begin
For i:=1 to N-1 do repeat
Begin writeln('donner une chaine ');
pm:=i; readln(ch);
For j:=i to N do
If(T[j] > T[pm] )then pm:=j; nb:=0;
for i:=1 to length(ch) do
aux:=T[i]; if(ch[i] in ['A'..'Z', 'a'..'z'] ) then
T[i]:=T[pm]; nb:=nb+1;
T[pm] :=aux ; until(nb=length(ch));
End; end;
End;

26 – faire un programme pascal qui permet de 27 – faire un programme pascal qui permet de
saisir un entier positif et afficher la somme de saisir un entier positif et afficher la somme de
ses diviseurs (solution 1) ses diviseurs (solution 2)
program ex; program ex;
uses wincrt; uses wincrt;
var
procedure affiche; x:integer;
var sd,i:integer;
begin procedure saisir(var x:integer);
repeat begin
writeln(' donner x >= 0'); repeat
readln(x); writeln(' donner x >= 0');
until(x>=0); readln(x);
until(x>=0);
sd:=0; end;
for i:=1 to x do procedure affiche(x:integer);
if(x mod i=0) then var sd,i:integer;
sd:=sd+i; begin
sd:=0;
writeln('la somme des diviseurs de ', x, ' =' ,sd); for i:=1 to x do
end; if(x mod i=0) then
sd:=sd+i;
writeln('la somme des diviseurs de ', x, ' =' ,sd);
begin end;
affiche;
end. begin
saisir(x);
affiche(x);
end.

Mr. ANIS ELBAHI 4SCX-MAT-TECH Page 5