___Enoncée__________ Ecrire une
solution récursive qui permet de calculer le chiffre de chance
d'une personne en se basant sur sa date de naissance.
Le chiffre de chance est calculé de la façon suivante:
filtrer la date ( c'est à dire ne laisser que les caracteres numériques )
calculer la somme des chiffres de cette date et évaluer le resultat:
si cette somme est formé par un seul chiffre alors c'est le chiffre de chance
sinon recalculer les chiffre de cette somme jusqu'a qu'on obtient
un seul chiffre qui est enfin le chiffre de chance !!
Exemplesi date = "21/02/1990" alors
on filtre la date: date devient "21021990"
Calculer la somme des chiffres: 2+1+0+2+1+9+9+0 = 24
Calculer la somme des chiffres de "24": 2+4 = 6
On est arrivé à un nombre d'un seul chiffre 6 : C'est le chiffre de chance
Enoncé
SALUT TOUT LE MONDE;
On dit souvent la solution mais en réalité on doit dire une solution !!!
biensur il y'a une différence ..!!
Ici je propose une solution pour l'exercice:
____________________________________________________________
program chiffre_chance;
uses wincrt;
var
date:string;
p:integer;
procedure saisie(var date:string);
begin
write('saisir votre date de naissance ............: ');
readln(date);
end;
function filtrer(date:string; i:integer):string;
begin
if i>length(date) then
filtrer:=date
else if date[i] in['0'..'9'] then
filtrer:=filtrer(date,i+1)
else
begin
delete(date,i,1);
filtrer:=filtrer(date,i)
End;
End;
function somme(date:string):integer;
var
p,e:integer;
begin
if length(date)=1 then
begin
val(date,p,e);
somme:=p;
End
else
begin
val(date[1],p,e);
delete(date,1,1);
somme:= p + somme(date);
End;
End;
function chiffre(p:integer):integer;
var
s:string;
begin
if p<=9 then
chiffre:=p
else
begin
str(p,s);
p:=somme(s);
chiffre:=chiffre(p);
End;
End;
begin
saisie(date);
date:=filtrer(date,1);
writeln('Date apres filtrage devient ...............: ',date);
writeln('Le chiffre de chance est ..................: ', chiffre(somme(date)));
End.