1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| program Telephone;
uses crt;
var
s:string;
i,k,j:byte;
Fin : Boolean;
Function BalayageIn (var Chaine : String) : Integer;
Var IndexChaine, IndexResultat : Byte;
CodeErreur : Integer;
Resultat : String;
Begin
CodeErreur := 0;
IndexChaine := 1;
IndexResultat := 0;
while (IndexChaine <= Length(Chaine)) and (CodeErreur = 0) do
begin
if Chaine[IndexChaine] in [#48..#57]
then (* Chiffre : OK *)
begin;
Inc(IndexResultat);
Resultat[IndexResultat] := Chaine[IndexChaine];
end
else
if Chaine[IndexChaine] in [#65..#90,#97..#122]
then (* Lettre *)
CodeErreur := 1;
Inc(IndexChaine);
end;
if CodeErreur = 0
then
if IndexResultat < 10
then (* Moins de 10 chiffres *)
CodeErreur := -10
else
if IndexResultat > 10
then (* Plus de 10 chiffres *)
CodeErreur := 10;
if CodeErreur = 0
then (* Renvoi du résultat *)
begin
Resultat[0] := Char(IndexResultat);
Chaine := Resultat;
end;
(* renvoi du code d'erreur *)
BalayageIn := CodeErreur;
End;
Procedure Format_Points(var t:string; a:string);
begin
insert(a,t,3); insert(a,t,6); insert(a,t,9); insert(a,t,12);
write(t);
end;
Begin
clrscr;
Fin := False;
repeat
writeln('Saisir le numéro de téléphone : ');
readln(s);
case BalayageIn(s) of
0 : Fin := True; (* OK : fin de boucle *)
1 : WriteLn('Erreur : contient au moins une lettre');
-10 : WriteLn('Pas assez de chiffres');
10 : WriteLn('Trop de chiffres');
end;
until Fin;
Format_Points(s,'.');
readln;
End. |
Partager