Exercice N° 1 :
Chercher tous les carrés parfaits de la forme aabb.
uses wincrt;
var i:integer;
ch:string[4];
begin
for i:=1000 to 9999 do begin
str(i,ch);
if (ch[1]=ch[2]) and (ch[3]=ch[4]) then write(i,' ');
end;
end.
Exercice N° 2 :
Soit la somme Sn = 1 + 1/22 + 1/32 + 1/42 + … + 1/n2
Saisir un entier naturel n (n ≥ 100), calculer et afficher la somme Sn. uses wincrt;
var
i,n:integer;
s:real;
begin
repeat
write('Donner un entier ');
readln(n);
until n>=100;
s:=1;
for i:=2 to n do s:=s+1/sqr(i);
write('Sn= ',s:0:3);
end.
Exercice N° 3 :
Chercher tous les entiers positifs formés de deux chiffres de la forme ab tel que : a+b divise a*b.
uses wincrt;
var i:integer;
begin
for i:=10 to 99 do
if ((i mod 10)*(i div 10) ) mod ((i mod 10)+(i div 10) )=0then write(i,' ');
end.
Exercice N° 4 :
Un entier est dit cubique s'il est égal à la somme des cubes de ses trois chiffres.
Exemple : 153 est un entier cubique parce que 153 = 13 + 53 + 33 Chercher tous les entiers cubiques de trois chiffres.
uses wincrt;
var
i,c,d,u:integer;
SERIE N°3 : LES STRUCTURES
ITERATIVES
begin
for i:=100 to 999 do begin
c:=i div 100;
d:=i div 10 mod 10;
u:=i mod 10;
if (sqr(u)*u)+(sqr(d )*d)+(sqr(c)*c)=i then write(i,' ');
end;
end.
Exercice N° 5 :
On remarque que : 12 * 42 = 21 * 24
Il existe 14 produits qui vérifient cette propriété : (10a+b)(10c+d) = (10b+a)(10d+c) Faire sortir tous ces entiers.
uses wincrt;
var
i,j:integer;
begin
for i:=10 to 99 do for j:=10 to 99 do
if ((i mod 10)*10+i div 10)*((j mod 10)*10+j div 10)=i *j then write('(',i,',',j,') ');
end.
Exercice N° 6 :
Calculer xn, x est un réel et n est un entier naturel positif.
uses wincrt;
var
i,n:integer;
x,p:real;
begin
write('Donner la puissance ');
readln(n);
write('Donner x ');
readln(x);
p:=1;
for i:=1 to n do p:=p*x;
write(x:0:2,' à la puissance ',n,' = ',p:0:2);
end.
Exercice N° 7 :
La suite de Fibonacci est définie par :
2 - n 1- n n
1 0
F F F
1 1 F F
Saisir un entier naturel n strictement supérieur à 1 puis calculer et afficher, pour toutes les valeurs de i inférieurs ou égales à n, les valeurs du rapport : Fi / Fi-1
uses wincrt;
var
i,n,f,f0,f1:integer;
begin
repeat
write('Donner le nombre de termes de la suite ');
readln(n);
until n >1;
f0:=1; write(f0,' ');
f1:=1; write(f1,' ');
for i:=2 to n do begin
f:=f1+f0;
f0:=f1;
f1:=f;
write(f,' ');
end;
end.
Exercice N° 8 :
Saisir un entier naturel n et afficher s’il est premier ou non.
Un nombre est dit premier s’il est divisible uniquement par 1 et lui-même.
uses wincrt;
var
n,nb,i:integer;
begin
repeat write('N=');
readln(n);
until n>0;
nb:=0;
for i:=1 to n do if n mod i=0 then nb:=nb+1;
if nb=2 then write(n,' est premier ') else write(n,' est non premier');
end.
uses wincrt;
var
n,i:integer;
test:boolean;
begin
repeat write('N=');
readln(n);
until n>0;
test:=true;
for i:=2 to n-1 do if n mod i=0 then test:=false;
if test =true then write(n,' est premier ') else write(n,' est non premier');
end.
uses wincrt;
var
n,i:integer;
begin
repeat
write('N=');
readln(n);
until n>0;
i:=2;
while (n mod i <>0) and(i<=n div 2) do i:=i+1;
if i > n div 2 then write(n,' est premier ') else write(n,' est non premier');
end.
Exercice N° 9 :
Saisir un entier naturel n et afficher sa factoriel.
Exemple : 5 ! = 120 program ex9;
uses wincrt;
var
x,i,f:integer;
begin
write('donner x ');
readln(x);
f:=1;
for i:= 1to x do f:= f*i;
write(x,'!= ' , f);
end.
Exercice N° 10 :
Chercher et afficher les entiers naturels premiers inferieurs à n.
uses wincrt;
var
i,n,j,k:integer;
begin
write('Donner n ');
readln(n);
for i:=2 to n do begin
k:=0;
for j:=1 to i do if i mod j =0 then k:=k+1;
if k=2 then write(i,' ');
end;
end.
Exercice N° 11 :
Une chaîne palindrome est une chaîne qui se lit dans les deux sens.
Saisir une chaîne de caractères et vérifier si elle est palindrome ou non.
Exemple : "radar" est une chaîne palindrome.
uses wincrt;
var i:integer;
ch:string;
test:boolean;
begin
write('Donner une chaine ');
readln(ch);
i:=0;
repeat i:=i+1;
if ch[i]=ch[length(ch)-i+1] then test:=true else test:=false;
until (test=false) or (i=length(ch) div 2);
if test then write(ch,' est palindrome') else write(ch, ' est non palindrome ');
end.
Exercice N° 12 :
Saisir n réels dans un tableau T (n compris entre 5 et 40), chercher le minimum et le maximum et la moyenne des éléments de T.
uses wincrt;
type
tab=array[1..40] of real;
var t:tab;
i,n:integer;
m,s,min,max:real;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..40];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
max:=t[1];
for i:=2 to n do if t[i]>max then max:=t[i];
writeln('max= ',max:0:2);
min:=t[1];
for i:=2 to n do if t[i]<min then min:=t[i];
writeln('min= ',min:0:2);
s:=0;
for i:=1 to n do s:=s+t[i];
m:=s/n;
write('moyenne = ',m:0:2);
end.
Exercice N° 13 :
Saisir un entier naturel n (n compris entre 10 et 100) suivi de n entiers à mettre dans un tableau T, ranger les entiers pairs et impairs respectivement dans les tableaux TP et TI.
uses wincrt;
type
tab=array[1..100] of integer;
var
t,ti,tp:tab;
i,j,k,n:integer;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..40];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
j:=0;
k:=0;
for i:=1 to n do if t[i] mod 2 =0 then begin
j:=j+1;
tp[j]:=t[i];
end else begin
k:=k+1;
ti[k]:=t[i];
end;
write('Les entiers pairs sont : ');
for i:=1 to j do write(tp[i],' ');
writeln;
write('Les entiers impairs sont : ');
for i:=1 to k do write(ti[i],' ');
end.
Exercice N° 14 :
Saisir deux entiers naturels n et m (n ≤ 10 et m ≤ 100).
Remplir le tableau TP et TN respectivement par n réels positifs et m réels négatifs.
Ranger, dans le tableau T, les éléments de TP suivis de ceux de TN.
uses wincrt;
type
tab=array[1..100] of integer;
var
t,tn,tp:tab;
i,m,n:integer;
begin
repeat
write('Donner n ');
readln(n);
until n <=10;
repeat
write('Donner m ');
readln(m);
until m <=100;
for i:=1 to n do begin
repeat
write('Tp[',i,']=');
readln(tp[i]);
until tp[i]>0;
t[i]:=tp[i];
end;
for i:=1 to m do begin
repeat
write('Tn[',i,']=');
readln(tn[i]);
until tn[i]<0;
t[i+n]:=tn[i];
end;
for i:= 1 to n+m do write(t[i],' ');
end.
Exercice N° 15 :
Saisir n entiers naturels dans le tableau T (n compris entre 5 et 100), faire l'insertion d'un entier k dans T à la position p.
uses wincrt;
type
tab=array[1..100] of integer;
var t:tab;
i,p,n,x:integer;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..100];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
repeat
write('Donner une position ');
readln(p);
until p in [1..n];
write('Donner un entier à inserer ');
readln(x);
for i:=n+1 downto p do t[i]:=t[i-1];
t[p]:=x;
for i:= 1 to n+1 do write(t[i],' ');
end.
Exercice N° 16 :
Saisir n caractères dans le tableau T (n compris entre 5 et 100), faire la suppression de l'élément de la position p et afficher la nouvelle version du T.
uses wincrt;
type
tab=array[1..100] of integer;
var t:tab;
i,p,n:integer;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..100];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
repeat
write('Donner une position ');
readln(p);
until p in [1..n];
for i:=p to n-1 do t[i]:=t[i+1];
for i:= 1 to n-1 do write(t[i],' ');
end.
Exercice N° 17 :
Saisir n caractères dans un tableau T (n compris entre 5 et 10), vérifier l'existence d'un caractère c dans le tableau et donner sa première position s'il existe.
uses wincrt;
type
tab=array[1..10] of char;
var t:tab;
i,n:integer;
c:char;
test:boolean;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..10];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
write('Taper un caractère ');
readln(c);
i:=0;
repeat
i:=i+1;
if t[i]=c then test:=true else test:= false;
until (test=true) or (i=n);
if test then write(c,' existe à la position ',i) else write(c,' n''existepas');
end.
Exercice N° 18 :
Saisir un tableau de n caractères (n compris entre 5 et 100), afficher la fréquence d'un caractère c dans T.
uses wincrt;
type
tab=array[1..10] of char;
var t:tab;
i,n,f:integer;
c:char;
begin
repeat
write('Donner n ');
readln(n);
until n in [5..10];
for i:=1 to n do begin
write('T[',i,']=');
readln(t[i]);
end;
write('Taper un caractère ');
readln(c);
f:=0;
for i:=1 to n do if t[i]=c then f:=f+1;
write('La fréquence de ',c,' est = ',f);
end.
Exercice N° 19 :
Saisir une chaine ch de longueur maximale 30 caractères ensuite inverser cette chaine.
Exemple : ch="INFO"
Le résultat sera : ch="OFNI"
program ex19;
uses wincrt;
var
ch:string;
x:char;
i:integer;
begin repeat
write('donner ch: ');
readln(ch);
until length(ch) <=30;
for i:=1 to length(ch) div 2 do begin
x:=ch[i];
ch[i]:=ch[length(ch)-i+1];
ch[length(ch)-i+1]:=x;
end;
writeln('la chaîne inversée est ',ch);
end.
Exercice N° 20 :
Saisir une chaine ch de longueur maximale 30 caractères ensuite extraire une chaine CHV contenant les voyelles et une chaine CHS contenant les symboles.
Exemple : ch="-INFO+2021 ?"
Le résultat sera : CHV="IO" et CHS="-+ ?"
program ex20;
uses wincrt ; var
i:integer;
ch, chv , chs :string ; begin
repeat
write('donner ch: ');
readln(ch);
until length(ch) in [1..30];
chv:= '';
chs:= '';
for i:=1 to length(ch) do
if upcase(ch[i]) in ['A','I','U','O','E','Y'] then chv:= chv+ ch[i]
else if not ( ch[i] in ['a'..'z' , 'A'..'Z' , '0'..'9' ] ) then chs:= chs + ch[i] ;
writeln( 'chv= ', chv);
writeln('chs= ',chs);
end.
Exercice N° 21 :
Saisir une chaine ch de longueur maximale 30 caractères ensuite afficher la fréquence de chacun de ses lettres.
Exemple : ch="Baccalaureat"
Le résultat sera : La fréquence de la lettre A est 4 La fréquence de la lettre B est 1 La fréquence de la lettre C est 2 La fréquence de la lettre E est 1 La fréquence de la lettre L est 1 La fréquence de la lettre R est 1 La fréquence de la lettre T est 1 La fréquence de la lettre U est 1 program ex21 ;
uses wincrt;
var ch:string;
i: char;
f,j: integer;
begin
repeat
write ('donner une chaine: ');
readln (ch);
until length (ch) in[1..30];
for i :='A' to 'Z' do begin
f:=0;
for j:= 1 to length (ch) do if upcase ( ch [j] ) = i then
f:= f+1 ;
if f<>0 then writeln (' la frequence de la lettre ',i, ' est ' ,f );
end;
end.