Exercice N° 1 :
Comparer deux variables.
USES WINCRT;
var
a,b:integer;
begin
write('Donner a ');
readln(a);
write('Donner b ');
readln(b);
if a>b then write(a,' est superieur à ',b) else write(b,' est supérieure à ',a);
end.
Exercice N° 2 :
Tester la parité d'un entier.
USES WINCRT;
var a:integer;
begin
write('Donner a ');
readln(a);
if a mod 2<>0 then write(a,' est impair ') else write(a,' est pair');
end.
Exercice N° 3 :
Soient a et b deux entiers. Tester si a est le diviseur de b ou inversement.
USES WINCRT;
var
a,b:integer;
begin
write('Donner a ');
readln(a);
write('Donner b ');
readln(b);
if a mod b=0 then write(b,' est le diviseur de ',a) else if b mod a=0 then write(a,' est le diviseur de ',b) else write('Parmi ',a,' et ',b,' il n''existe plus de diviseur propre');
end.
Exercice N° 4 :
Soit l'entier n. Tester la parité de chacun des 2 chiffres de n.
Ex : n = 16 1 est impair et 6 est pair.
USES WINCRT;
var
n,a,b:integer;
begin
write('Donner n ');
readln(n);
a:=n mod 10;
b:=n div 10;
if b mod 2=0 then write(b,' est pair ') else write(b,' est impair ') ; if a mod 2=0 then write(a,' est pair ') else write(a,' est impair ') ; end.
Exercice N° 5 :
Décider si un entier est divisible par ses 2 chiffres.
Ex : 24 est divisible par 2 et par 4.
USES WINCRT;
var
n,a,b:integer;
begin
write('Donner n ');
readln(n);
a:=n mod 10;
b:=n div 10;
if (n mod a=0) and (n mod b=0) then write(n,' est divisible par ',a,' et ',b) else write (n,' n''est pas divisible par ',a,' et ',b) ;
end.
Exercice N° 6 :
Soit n un entier positif de deux chiffres de la forme ab.
Tester si a*b est divisible par a+b.
uses wincrt;
var
n,d,u:integer;
begin
write('n=');
readln(n);
u:=n mod 10;
d:=n div 10;
if u*d mod (u+d) =0 then
write(u*d,' est divisible par ',u+d) else write('condition non verifiée');
end.
Exercice N° 7 :
Décider si un entier est cubique ou non.
Un entier est dit cubique s'il est égal à la somme des cubes de ses trois chiffres.
Ex : 153 = 13 + 53 + 33 uses wincrt;
var
n,d,u,c:integer;
begin
write('n=');
readln(n);
c:=n div 100;
d:=n div 10 mod 10;
u:=n mod 10;
if u*sqr(u)+d*sqr(d)+c*sqr(c)=n then write(n,' est cubique')
else write(n,' est non cubique');
end.
Exercice N° 8 :
Saisir deux entiers et un opérateur (+ - * /) et afficher le résultat correspondant (suivant l'opérateur).
uses wincrt;
var
a,b:integer;
op:char;
begin
write('a=');
readln(a);
write('b=');
readln(b);
write('op=');
readln(op);
case op of '+': write(a+b);
'-': write(a-b);
'*': write(a*b);
'/': if b<>0 then write(a/b:0:2) else write('Division par 0 impossible ');
end;
end.
uses wincrt;
var
a,b:integer;
op:char;
begin
write('a=');
readln(a);
write('b=');
readln(b);
write('op=');
readln(op);
if op= '+' then write(a+b)
else if op= '-' then write(a-b) else if op= '*' then write(a*b)
else if b<>0 then write(a/b:0:2) else write('Division par 0 impossible ');
end.
Exercice N° 9 :
Saisir un entier positif n (n ≤ 32767). Décider s’il est palindrome ou non.
Un entier est dit palindrome si ses chiffres sont symétriques.
Ex : si n = 2442 alors n est palindrome.
Uses wincrt ; Var
N :integer ; Res,ch:string;
Begin write('n=');
Readln(n);
Str(n,ch);
Res:='Non Pal';
Case n of
0..9 : res:='Pal';
10..99: if ch[1]=ch[2] then res:='Pal';
100..999: if ch[1]=ch[3] then res:='Pal';
1000..9999: if (ch[1]=ch[4]) and (ch[2]=ch[3]) then res:='Pal';
10000..32767: if (ch[1]=ch[5]) and (ch[2]=ch[4]) then res:='Pal';
End;
Write(n,' est ',res);
End.
Exercice N° 10 :
Saisir un caractère et afficher sa nature :
S'il est une lettre (majuscule ou minuscule) et (voyelle ou consonne).
S'il est un chiffre (pair ou impair).
S'il est un symbole (son code ASCII).
uses wincrt ; var
c:char ; begin
write ('c=') ; readln (c) ; case c of
'a'.. 'z': if c in ['a','e','i','u','o','y'] then write( 'Lettre miniscule voyelle') else write('Lettre miniscule consonne') ;
'A'.. 'Z': if c in ['A','E','I','O','U','Y'] then write( 'Lettre majuscule voyelle') else write('Lettre majuscule consonne') ;
'0','2','4','6','8': write('Chiffre pair') ; '1','3','5','7','9': write('Chiffre impair') ; else write(ord(c));
end ; end.
Exercice N° 11 :
Un étudiant passe trois examens. Il est déclaré admis si :
Soit, il a au moins 9 points à chaque examen.
Soit, la moyenne des trois examens est au moins égale à 10 points et la plus basse note est au moins égale 8 points.
S'il n'est pas admis alors il est refusé.
uses wincrt;
var
a,b,c:integer;
res:string;
begin
write('a=');
readln(a);
write('b=');
readln(b);
write('c=');
readln(c);
res:='Refusé';
if (a>=9)and (b>=9) and (c>=9) then res:='admis';
if ((a+b+c)/3>=10)and(a>=8) and(b>=8) and(c>=8) then res:='Admis';
write('L''elève est ',res);
end.
Exercice n° 12 :
Écrire un programme qui fait entrer une chaîne alphabétique CH, formé de trois lettres.
=> dans le cas où la chaîne est symétrique (de la forme XYX),
déterminer puis afficher le minimum et le maximum des lettres X et Y.
=> dans le cas contraire, déterminer et afficher un message indiquant si cette chaîne commence par une lettre majuscule ou minuscule.
Exemple 1 : CH = ICI ICI est symétrique Min = C Max = I Exemple 2 : CH = EYE EYE est symétrique Min = E Max = Y
Exemple 3 : CH = DEL DEL n’est pas symétrique et la 1ère lettre de la chaîne est majuscule Exemple 4 : CH = cAs cAs n’est pas symétrique et la 1ère lettre de la chaîne est minuscule.
uses wincrt ; var
ch:string ; begin
write ('ch=') ; readln (ch) ;
if (ch[1]=ch[3])and(ch[1]>ch[2]) then write(ch,' est symetrique et max = ',ch[1],' et min= ',ch[2]);
if (ch[1]=ch[3])and(ch[1]<ch[2]) then write(ch,' est symetrique et max = ',ch[2],' et min= ',ch[1]);
if (ch[1]<>ch[3])and(ch[1]in ['a'..'z']) then write(ch,' n''est pas symetrique et commence par une miniscule');
if (ch[1]<>ch[3])and(ch[1]in ['A'..'Z']) then write(ch,' n''est pas symetrique et commence par une majuscule');
end.
Exercice N° 13 :
Dans cet exercice, nous nous intéressons aux ordinaux abrégés en anglais, ou le nombre est écrit en chiffres.
Les premiers sont :« 1st », « 2nd », « 3rd », « 4th », etc. (abbreviation de « first, second, third, fourth, ... »).
Pour déterminer le suffixe, on regarde le dernier chiffre du nombre : - si c'est 1, on ajoute le suffixe est -st
- si c'est 2, le suffixe est -nd - si c'est 3, le suffixe est -rd- sinon le suffixe est -th.
- si l'avant-dernier chiffre du nombre est 1, le suffixe est toujours -th.
Écrire un programme qui lit un nombre, et qui affiche l'ordinal anglais abrégée correspondant.
uses wincrt;
var
n,u,d:integer;
ch:string;
begin
write('N=');
readln(n);
u:=n mod 10;
d:=n div 10 mod 10;
if d=1 then ch:='-th' else if u=1 then ch:='-st' else if u=2 then ch:='-nd'
else if u=3 then ch:='-rd' else ch:='-th';
write(n,' a comme suffixe ',ch);
end.
Exercice 14 :
Ecrire un programme intitulé DATES, qui saisit une date sous la forme jj/mm/aaaa (chaîne de 10 caractères) où jj représente le jour, mm le mois, aaaa l’année et l’affiche décodée (jj Mois aaaa).
Exemple : 10/01/2007 donne 10 Janvier 2007
program dates ; uses wincrt;
var
mois,aaaa,jj,date:string;
mm,e:integer;
begin
writeln ('Donner une date ');
readln(date);
jj:= copy(date,1,2);
mois := copy(date,4,2);
aaaa := copy(date,7,4);
val(mois,mm,e);
if e=0 then
case mm of 1: mois := 'janvier';
2: mois := 'Février';
3: mois := 'mars';
4: mois := 'Avril';
5: mois := 'Mai';
6: mois := 'Juin';
7: mois := 'juillet';
8: mois := 'Aout';
9: mois := 'Septembre';
10: mois := 'Octobre';
11: mois := 'Novembre';
12: mois := 'Décembre';
end;
writeln(date,’ devient ', jj,' ', mois,' ',aaaa);
end.