Program S3;
Type
nombre = Record
nb_dec : string[100];
mention : string[100];
End;
fnombre = file Of nombre;
Var
f : text;
fd : fnombre;
n : integer;
//*****************************************
Procedure remplir(Var f:text;n:integer);
Var
i : integer;
ligne : string;
Begin
assign(f,'chaines.txt');
rewrite(f);
For i:=1 To n Do
Begin
Repeat
write('Saisir une chaine: ');
readln(ligne);
Until (length(ligne) In [1..9]);
writeln(f,ligne);
End;
close(f);
End;
//*****************************************
Function div11(ch:String) : boolean;
Var
spaire,simpaire,i,v,e : integer;
Begin
spaire := 0;
simpaire := 0;
For i:=1 To length(ch) Do
Begin
val(ch[i],v,e);
If (i Mod 2=0) Then
spaire := spaire+v
Else
simpaire := simpaire+v;
End;
If (abs(spaire-simpaire)Mod 11=0) Then
div11 := true
Else
div11 := false;
End;
//*****************************************
Function extraction(ch:String) : string;
Var
i : integer;
res : string ;
Begin
res := '';
For i:=1 To length(ch) Do
If (ch[i] In ['0'..'9']) Then
res := res+ch[i];
extraction := res;
End;
//*****************************************
Procedure extraire(Var f:text; Var fd:fnombre;n:integer);
Var
nb : nombre;
i : integer;
ligne,v : string;
Begin
reset(f);
assign(fd,'nombres.dat');
rewrite(fd);
For i:=1 To n Do
Begin
readln(f,ligne);
v := extraction(ligne);
With nb Do
If (v='') Then
Begin
nb_dec := '1999999999';
mention := 'Ce n''est pas un nombre décimal.';
End
Else
Begin
nb_dec := v;
If (div11(v)) Then
mention := ' est divisible par 11.'
Else
mention := ' n''est pas divisible par 11.'
End;
write(fd,nb);
End;
close(f);
close(fd);
End;
Procedure affiche(Var fd:fnombre;n:integer);
Var
i : integer;
nb : nombre;
Begin
reset(fd);
For i:=1 To n Do
Begin
read(fd,nb);
With nb Do
writeln('Nb_dec: ',nb_dec,' ',mention);
End;
close(fd);
End;
//*****************************************
Begin
Repeat
write('Donner le nombre de chaines: ');
readln(n);
Until (n<50);
remplir(f,n);
extraire(f,fd,n);
writeln;
writeln;
writeln('----- CONTENU DU FICHIER NOMBRES.DAT -----');
writeln;
writeln;
affiche(fd,n);
End.
Inscription à :
Publier les commentaires (Atom)