Vous êtes sur la page 1sur 8

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 1 :

Exercice 2 :

On se propose de remplir un tableau T par N entiers positifs (5 N 12), et de calculer et afficher


la somme des entiers pairs.

On se propose de remplir un tableau T par N chanes non vides (5 N 12), de rechercher la


longueur de la chane la plus longue puis dafficher toutes les chanes ayant cette longueur.
Uses WinCrt;
Type Tab=Array[1..12] Of String;
Var T:Tab; N:Integer;

Uses WinCrt;
Type Tab=Array[1..12] Of Integer;
Var T:Tab; N:Integer;
{***************************************************}
Procedure Saisir(Var N:Integer);
Begin
Repeat
Write('N: '); Readln(N);
Until N IN [5..12];
End;
{***************************************************}
Procedure Remplir(Var T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
Repeat
Write('T[',i,']: '); Readln(T[i]);
Until T[i]>=0;
End;
End;
{***************************************************}
Function SommeEntiersPairs(T:Tab; N:Integer):Integer;
Var i, S:Integer;
Begin
S:=0;
For i:=1 To N Do
Begin
If T[i] MOD 2 =0 Then S:=S+T[i];
End;
SommeEntiersPairs:=S;
End;
{***************************************************}
Begin
Saisir(N);
Remplir(T, N);
Write('Somme= ', SommeEntiersPairs (T, N));
End.
Lyce Attarine Ariana 2014-2015

{***************************************************}
Procedure Saisir(Var N:Integer);
Begin
Repeat
Write('N: '); Readln(N);
Until N IN [5..12];
End;

{***************************************************}
Procedure Afficher(T:Tab; N, LMax:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
If Length(T[i])=LMax Then Writeln(T[i]);
End;

{***************************************************}
Procedure Remplir(Var T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
Repeat
Write('T[',i,']: '); Readln(T[i]);
Until T[i]<>''; {ou encore: Length(T[i])>0}
End;
End;

{***************************************************}
Function LongueurMax(T:Tab; N:Integer):Integer;
Var i, L:Integer;
Begin
L:=Length(T[1]);
For i:=2 To N Do
Begin
If Length(T[i]) > L Then L:=Length(T[i]);
End;
LongueurMax:=L;
End;

{***************************************************}
Begin
Saisir(N);
Remplir(T, N);
Afficher(T, N, LongueurMax(T, N));
End.
Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 3 :

Exercice 4 :

On se propose de saisir une chane CH non vide et compose uniquement par des lettres
alphabtiques, dafficher le nombre doccurrence de chaque lettre de CH.

On se propose dcrire un programme qui permet :


- Dterminer le terme T pour lequel la somme des n premiers termes dune suite U dpasse une
limite LIM (LIM est une donne avec 100 LIM 500).
- Dafficher la liste des termes qui prcdent T.
La suite U est dfinie par : U0=5
Un= 2*Un-1 +5

Uses WinCrt;
Type TabOcc=Array['A'..'Z'] Of Integer;
Var T:TabOcc; Ch:String;
{***************************************************}
Function Alpha_V1(Ch:String):Boolean;
Var i:Integer;
Begin
i:=0;
Repeat
i:=i+1;
Until (i=Length(Ch)) OR NOT (Upcase(Ch[i]) IN ['A'..'Z']);
Alpha_V1:=Upcase(Ch[i]) IN ['A'..'Z'];
End;
{***************************************************}
Function Alpha_V2(Ch:String):Boolean;
Var i:Integer; B:Boolean;
Begin
B:=True;
For i:=1 To Length(Ch) Do
If NOT (Upcase(Ch[i]) IN ['A'..'Z']) Then B:=False;
Alpha_V2:=B;
End;
{***************************************************}
Procedure Saisir(Var Ch:String);
Begin
Repeat
Write('Ch: '); Readln(Ch);
Until (Length(Ch)>0) AND Alpha_V1(Ch);
End;
{***************************************************}
Procedure Afficher_Nb_Occ(T:TabOcc);
Var c:'A'..'Z';
Begin
For c:='A' To 'Z' Do
If(T[c])<>0 Then Writeln('Le Nb d''Occ de <',c,'> =', T[c]);
End;
{***************************************************}
Procedure Calculer_Nb_Occ(Var T:TabOcc; Ch:String);
Var i:Integer; c:'A'..'Z';
Begin
For c:='A' To 'Z' Do T[c]:=0;
For i:=1 To Length(Ch) Do
Begin
T[Upcase(Ch[i])]:=T[Upcase(Ch[i])]+1;
End;
End;
{***************************************************}
Begin
Saisir(Ch);
Calculer_Nb_Occ(T, Ch);
Afficher_Nb_Occ(T);
End.

Lyce Attarine Ariana 2014-2015

Indication : Utiliser un tableau pour ranger les termes de U.


Uses WinCrt;
Type Suite=Array[0..50] Of Integer;
Var U:Suite; Lim, N:Integer;
{***************************************************}
Procedure Saisir(Var Lim:Integer);
Begin
Repeat
Write('Lim: '); Readln(Lim);
Until (Lim>=100) AND (Lim<=500)
End;
{***************************************************}
Procedure Calculer(Var U:Suite; Var N:Integer; Lim:Integer );
Begin
U[0]:=5;
N:=0;
Repeat
N:=N+1;
U[N]:=2*U[N-1]+5;
Until U[N]>Lim;
End;
{***************************************************}
Procedure Afficher (U:Suite; N:Integer);
Var i:Integer;
Begin
For i:=0 To N-1 Do
Begin
Writeln('U[',i,']= ',U[i]);
End;
End;
{***************************************************}
Begin
Saisir(Lim);
Calculer(U, N, Lim);
Afficher(U, N);
End.

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 5 :
On se propose d'crire un programme qui permet de remplir un tableau T1 par N (4 N 8)
chanes de caractres non vides puis de gnrer et afficher les deux tableaux T2 et T3 avec :
- T2 contient les chanes de T1 converties en majuscule
- T3 contient les chanes de T1 converties en minuscule
Uses WinCrt;
Type Tab=Array[1..8] Of String;
Var T1, T2, T3:Tab; N:Integer;
{***************************************************}
Procedure Saisir(Var N:Integer);
Begin
Repeat
Write('N: '); Readln(N);
Until N IN [4..8];
End;
{***************************************************}
Procedure Remplir(Var T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
Repeat
Write('T[',i,']: '); Readln(T[i]);
Until Length(T[i])>0;
End;
End;
{***************************************************}
Procedure Afficher(T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
Writeln(T[i]);
End;
End;
{***************************************************}
Function Chaine_En_Minus(Ch:String):String;
Var i:Integer;Res:String;
Begin
Res:='';
For i:=1 To Length(Ch) Do
Begin
If Ch[i] IN ['A'..'Z'] Then
Res:=Res+Char(Ord(Ch[i])+32)
Else Res:=Res+Ch[i];
End;
Chaine_En_Minus:=Res;
End;
Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

{***************************************************}
Procedure Tab_En_Minus(T1:Tab; Var T3:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
T3[i]:=Chaine_En_Minus(T1[i]);
End;
End;
{***************************************************}
Function Chaine_En_Majus(Ch:String):String;
Var i:Integer;
Begin
For i:=1 To Length(Ch) Do
Begin
Ch[i]:=Upcase(Ch[i]);
End;
Chaine_En_Majus:=Ch;
End;
{***************************************************}
Procedure Tab_En_Majus(T1:Tab; Var T2:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
T2[i]:=Chaine_En_Majus(T1[i]);
End;
End;
{***************************************************}
Begin
Saisir(N);
Remplir(T1, N);
Tab_En_Majus(T1, T2, N);
Tab_En_Minus(T1, T3, N);
Writeln('T2:-------------------------');
Afficher(T2, N);
Writeln('T3:-------------------------');
Afficher(T3, N);
End.

Lyce Attarine Ariana 2014-2015

4 SC 1 4 M 2

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 6 :
Soit un tableau de N chanes de caractres de tailles minimales est de 5 caractres. On se propose
dcrire un programme permettant de raliser le traitement suivant :
Remplir le tableau T1 par N chanes (5 N 30).
liminer de chaque lment du tableau tous les caractres non alphabtiques.
Gnrer un deuxime tableau T2 contenant les longueurs des chanes de T1.
Afficher les tableaux T1 et T2 de la manire dcrite dans lexemple suivant :
La chane BoNJOur est de longueur 5
Uses WinCrt;
Type Chaine20=String[20];
TabChaines=Array[1..30] Of Chaine20;
TabLong=Array[1..30] Of Byte;
Var T1:TabChaines; T2:TabLong; N:Byte;
{***************************************************}
Procedure Saisir(Var N:Byte);
Begin
Repeat
Write('N: '); Readln(N);
Until N IN [5..30];
End;
{***************************************************}
Procedure Remplir(Var T:TabChaines; N:Byte);
Var i:Byte;
Begin
For i:=1 To N Do
Begin
Repeat
Write('T[',i,']: '); Readln(T[i]);
Until Length(T[i])>=5;
End;
End;
{***************************************************}
Procedure Afficher(T1:TabChaines; T2:TabLong; N:Byte);
Var i:Byte;
Begin
For i:=1 To N Do
Begin
Writeln('La chane <<',T1[i],'>> est longueur ',T2[i]);
End;
End;

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

{***************************************************}
Procedure EliminerNonAlpha(Var Ch:Chaine20);
Var i:Byte;
Begin
i:=1;
Repeat
If Ch[i] IN ['A'..'Z', 'a'..'z'] Then i:=i+1
Else Delete(Ch, i, 1);
Until i>Length(Ch);
End;
{***************************************************}
Procedure CorrigerTab1(Var T1:TabChaines; N:Byte);
Var i:Byte;
Begin
For i:=1 To N Do
Begin
EliminerNonAlpha(T1[i]);
End;
End;
{***************************************************}
Procedure GenererTab2(T1:TabChaines; Var T2:TabLong; N:Byte);
Var i:Byte;
Begin
For i:=1 To N Do
Begin
T2[i]:=Length(T1[i]);
End;
End;
{***************************************************}
Begin
Saisir(N);
Remplir(T1, N);
CorrigerTab1(T1, N);
GenererTab2(T1, T2, N);
Afficher(T1, T2, N);
End.

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 7 :
On se propose dcrire un programme qui permet de saisir une chane de caractres non vide
et compose uniquement de lettres alphabtiques et despaces, puis de la crypter de la manire
suivante :
- Chaque lettre dun mot sera remplace par la lettre qui la suit de P positions dans
lalphabet franais, o P est le rang du mot dans la chane.
- On suppose que le caractre qui suit lettre "Z" est le caractre "A" et celui qui suit la lettre
"z" est le caractre "a".
- Le caractre espace ne subit aucune modification.
Avant de crypter la chane de caractres, elle doit subir les corrections suivantes :
- On enlve les espaces en plus, pour nen garder quun seul entre deux mots successifs.
- On enlve ventuellement le ou les espaces au dbut et la fin de chaque phrase.
NB : Les lettres de lalphabet franais : A B C D E F G H I J K L M N O P Q R S T U V
WXYZ
Le code ASCII de "A" est gal 65 et le code ASCII de "a" est gal 97
Exemple :
Chane initiale:
Aprs correction:
Rang des mots:
Chane Crypte :

DevoirDeSyntheseEnInformatique
DevoirDeSyntheseEnInformatique
1

EfwpjsFgVbqwkhvhIrNsktwrfynvzj

Uses WinCrt;
Var Ch:String;
{***************************************************}
Function Verif_V1(Ch:String):Boolean;
Var i:Integer;
Begin
i:=0;
Repeat
i:=i+1;
Until (i=Length(Ch)) OR NOT (Upcase(Ch[i]) IN ['A'..'Z','
']);
Verif_V1:=Upcase(Ch[i]) IN ['A'..'Z',' '];
End;
{***************************************************}
Function Verif_V2(Ch:String):Boolean;
Var i:Integer; B:Boolean;
Begin
B:=True;
For i:=1 To Length(Ch) Do
Begin
If NOT (Upcase(Ch[i]) IN ['A'..'Z',' '])
Then B:=False;
End;
Verif_V2:=B;
End;
Lyce Attarine Ariana 2014-2015

{***************************************************}
Procedure Saisir(Var Ch:String);
Begin
Repeat
Write('Ch: '); Readln(Ch);
Until (Length(Ch)>0) AND Verif_V1(Ch);
End;
{***************************************************}
Procedure Corriger(Var Ch:String);
Begin
While Pos(' ', Ch)<>0 Do
Begin
Delete(Ch,Pos(' ', Ch), 1);
End;
If Ch[1]=' ' Then Delete(Ch,1, 1);
If Ch[Length(Ch)]=' ' Then Delete(Ch,Length(Ch), 1);
End;
{***************************************************}
Procedure Crypter(Var Ch:String);
Var P, i:Byte;
Begin
P:=1;
For i:=1 To Length(Ch) Do
Begin
If Ch[i] IN ['A'..'Z'] Then
Ch[i]:=Chr(((Ord(Ch[i])-Ord('A')+P) MOD 26)+Ord('A'))
Else If Ch[i] IN ['a'..'z'] Then
Ch[i]:=Chr(((Ord(Ch[i])-Ord('a')+P) MOD 26)+Ord('a'))
Else P:=P+1;
End;
End;
{***************************************************}
Begin
Saisir(Ch);
Corriger(Ch);
Crypter(Ch);
Write(Ch);
End.

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 8 :
On se propose dcrire un programme permettant de remplir un tableau T de N entiers
suprieurs ou gaux 10 (avec 5 N 200), puis dafficher tous les entiers premiers
circulaires de T.
Un nombre est dit premier circulaire sil est premier et vrifie la proprit suivante : chacun
des rotations de ses chiffres dun lment vers la droite, forme son tour un nombre
premier.
Exemple :
719 est un nombre premier circulaire car : 719, 971 et 197 sont des nombres
premiers, avec :
o 971 est le nombre obtenu aprs une rotation des chiffres de 719 dun lment
vers la droite
o Et 197 est le nombre obtenu aprs une rotation des chiffres de 971 dun
lment vers la droite
NB : Un entier est dit premier sil nest divisible que par 1 et par lui-mme.
Uses WinCrt;
Type Tab=Array[1..12] Of LongInt;
Var T:Tab; N:Integer;
{***************************************************}
Procedure Saisir(Var N:Integer);
Begin
Repeat
Write('N: '); Readln(N);
Until N IN [5..200];
End;
{***************************************************}
Procedure Remplir(Var T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
Repeat
Write('T[',i,']: '); Readln(T[i]);
Until T[i]>=10;
End;
End;
{***************************************************}
Function PremierCirculaire(X:LongInt):Boolean;
Var e, NombreRotations:Integer; Ch:String[20];
{--------------}
Function Premier_V1(X:LongInt):Boolean;
Var i:LongInt;
Begin
i:=2;
While (i<=X DIV 2) AND (X MOD i <> 0) Do i:=i+1;
Premier_V1:=X MOD i <> 0;
End;
Lyce Attarine Ariana 2014-2015

{--------------}
Function Premier_V2(X:LongInt):Boolean;
Var i:LongInt; B:Boolean;
Begin
B:=True;
For i:=2 To X DIV 2 Do
Begin
If (X MOD i = 0) Then B:=False;
End;
Premier_V2:=B;
End;
{--------------}
Begin
STR(X, Ch);
NombreRotations:=1;
While Premier_V1(X) AND (NombreRotations<Length(Ch))Do
Begin
Ch:=Ch[Length(Ch)]+Ch;
Delete(Ch, Length(Ch), 1);
Val(Ch, X, e);
Write('= ', X); Readln;
NombreRotations:=NombreRotations+1;
End;
PremierCirculaire:=Premier_V1(X);
End;
{***************************************************}
Procedure Afficher(T:Tab; N:Integer);
Var i:Integer;
Begin
For i:=1 To N Do
Begin
If PremierCirculaire(T[i]) Then
Writeln('T[',i,']: ', T[i]);
End;
End;
{***************************************************}
Begin
Saisir(N);
Remplir(T, N);
Afficher(T, N);
End.

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 9 :
On se propose dcrire un programme qui permet de calculer puis d'afficher la racine carre d'un
rel positif x donn en utilisant la suite suivante : U0 = (1+x)/2
Un+1 = (Un + x/Un)/2
Il s'agit de calculer les premiers termes de cette suite jusqu' ce que la diffrence entre deux
termes successifs devienne infrieure ou gale 10-4. Le dernier terme calcul est une valeur
approche de

x 10-4 prs.

Uses WinCrt;
Var X:Real;
{***************************************************}
Procedure Saisir(Var X:Real);
Begin
Repeat
Write('X: '); Readln(X);
Until X>=0;
End;
{***************************************************}
Function RacineCarree(X:Real):Real;
Var Up, Ua :Real;
Begin
Ua:=(1+X)/2;
Repeat
Up:=Ua;
Ua:=(Up+X/Up)/2;
Until Abs(Up-Ua)<=0.0001;
RacineCarree:=Ua;
End;
{***************************************************}
Begin
Saisir(X);
Write('Racine(',X:0:3,')= ', RacineCarree(X):0:5);
End.

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 10 :
LIMEI (International Mobile Equipement Identity) est un numro compos de 15 chiffres. Il
permet un oprateur de rseau GSM didentifier le mobile appelant et ainsi de lautorise ou non
se connecter.
Un numro est dit IMEI sil vrifie la formule de LUHN dcrite ci-dessous :
1) Doubler les valeurs des chiffres de rang pair.
2) Si le double est suprieur ou gale 10 alors il sera remplac par la somme de ses chiffres.
3) Calculer la somme S de tous les chiffres du numro ainsi obtenu
4) Si la somme S est multiple de 10 alors le nombre est en accord avec la formule de LUHN et dans
ce cas il est dit valide, sinon il est dit invalide.
Exemples : Le numro 374365039281154 est un IMEI, car en appliquant la formule de
LUHN on obtient 60 qui est multiple de 10.
3

7*2

3*2

5*2

3*2

2*2

1*2

5*2

14

10

10

1+4

1+0

1+0

Etape 3 : S= 3 + 5 + 4 + 6 + 6 + 1 + 0 + 6 + 9 + 4 + 8 + 2 + 1 + 1 +

Etape 1 :

Etape 2 :

=60

Travail demand :
crire un programme en Pascal qui permet de saisir un numro de 15 chiffres et de vrifier sil est
un IMEI ou non en appliquant la formule de LUHN.

Exercice 11 :
Pour vrifier si un entier positif K de n chiffres est un nombre de KAPREKAR ou non, on peut
suivre la mthode suivante :
1) lever K au carr
2) additionner l'entier form par les n chiffres de droite du carr de K avec l'entier form par le reste
des chiffres du carr de K
3) si la somme trouve l'tape 2) est gale K alors le nombre est dit de KAPREKAR
Exemples :
Si K= 9 alors n=1 et K2 = 81
Lentier form par les n chiffres de droite est gal 1 et 1'entier form par le reste des chiffres
est gal 8.
On constate que 1 + 8 = 9 = K, donc 9 est un nombre de KAPREKAR.
Si K= 45 alors n =2 et K2 = 2025
Lentier form par les n chiffres de droite est gal 25 et lentier form par le reste des chiffres
est gal 20.
On constate que 25 +20 = 45 = K, donc 45 est un nombre de KAPREKAR. .
Si K=297 alors n = 3 et K2 = 88209
Lentier form par les n chiffres de droite est gal 209 et lentier form par le reste des chiffres
est gal 88.
On constate que 209 + 88 = 297 = K, donc 297 est un nombre de KAPREKAR.
Travail demand :
crire un programme Pascal qui permet de dterminer tous les nombres de KAPREKAR
infrieurs ou gaux 1000 en utilisant la mthode dcrite ci-dessus.

Lyce Attarine Ariana 2014-2015

Lyce Attarine Ariana 2014-2015

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 10 Corrig :

Srie N 2 : Les Sous-Programmes

4 SC 1 4 M 2

Exercice 11 Corrig :
uses wincrt;

Uses Wincrt;
Type Chaine15=String[15];
Var Ch:Chaine15;
{*******************************************}
Function Numerique(Ch:Chaine15):Boolean;
Var i:Integer; Valide:Boolean;
Begin
Valide:=True;
i:=0;
Repeat
i:=i+1;
If Not (Ch[i] IN ['0'..'9']) Then Valide:=False;
Until (Not Valide) OR (i=Length(Ch));
Numerique:=Valide;
End;
{*******************************************}
Procedure Saisir(Var Ch:Chaine15);
Begin
Repeat
Write('Saisir une Numro: '); Readln(Ch);
Until (Length(Ch)=15) AND Numerique(Ch);
End;
{*******************************************}
Function LUHN(Ch:Chaine15):Boolean;
Var i, S, X, Y:Integer; Valide:Boolean;
Begin
S:=0;
For i:=1 To Length(Ch) Do
Begin
Val(Ch[i], X, Y);
If i MOD 2=0 Then
Begin
X:=X*2;
If X>=10 Then X:= X DIV 10 + X MOD 10;
End;
S:=S+X
End;
LUHN:= S MOD 10 = 0;
End;
{*******************************************}
Begin
Saisir(Ch);
If LUHN(CH) Then Write(Ch,' Est un EMEI')
Else Write(Ch,' N''est pas un EMEI')
End.

Lyce Attarine Ariana 2014-2015

{** Fonction qui vrifie si un entier est de KAPREKAR ou non ***}

Function Kaprekar(K:LongInt):Boolean;
Var
ChK:String;
ChK_Carre:String;
n:Integer;
K_Carre:LongInt;
Droite,Gauche:LongInt;
Ch_Droite,Ch_Gauche:String;
e:Integer;
Begin
{*** Conversion de k en chane ChK }

STR(K,ChK);
{*** Dterminer n=nombre de chiffre de K}

n:=Length(ChK);
{*** Calcul du carr de K=K_Carre}

K_Carre:=SQR(K);
{*** Conversion K_Carre en chaine ChK_Carre}

STR(K_Carre,ChK_Carre);
{*** Extraction de la partie droite de ChK_Carre }

Ch_Droite:=Copy(ChK_Carre, Length(ChK_Carre)-n+1 , n);


{*** Extraction de la partie Gauche de ChK_Carre }

Ch_Gauche:=Copy(ChK_Carre, 1 , Length(ChK_Carre)-n);
{*** Conversion de la partie droite en Entier }

VAL(Ch_Droite, Droite, e);


{*** Conversion de la partie gauche en Entier }

VAL(Ch_Gauche, Gauche, e);


{*** Renvoi du rsultat TRUE ou FALSE

Kaprekar:= K=Droite+Gauche;
{ou encore: IF (K=Droite+Gauche) THEN Kaprekar:= TRUE
ELSE Kaprekar:=FALSE;}

End;
{** Procdure qui parcoure les nombres de 1 1000 et vrifie pour chaque
nombre s'il est de kaprekar ou non les nombres de kaprekar seront afficher }

Procedure AfficherLesNombresDeKaprekar;
Var
i:Integer;
Begin
FOR i:=1 TO 1000 DO
Begin
IF kaprekar(i) THEN Writeln(i);
End;
End;
{**********

Programme Principal **************}

Begin
AfficherLesNombresDeKaprekar;
End.
Lyce Attarine Ariana 2014-2015