Solution algorithmique pour ce problème

Fermé
boubou1987 - 15 févr. 2011 à 10:55
flo13142 Messages postés 71 Date d'inscription mardi 7 décembre 2010 Statut Membre Dernière intervention 21 février 2011 - 16 févr. 2011 à 09:54
Bonjour,
c'est ça le problème que je cherche à résoudre
"soit par exemple la date de naissance suivante"29/09/1988
on additionne les chiffres de la date de naissance:2+9+0+9+1+9+8+8=46
46 est composé de deux chiffres, on refait le meme traitement 4+6=10
10 est composé de deux chiffres, on refait le meme traitement 1+0=1
1 est composé d'un seul chiffre et c'est le chiffre de chance recherché
Ecrire une procedure permettant de saisir la date de naissance d'une personne sous forme jj/mm/aaaa(aucun controle n'est effectué) et appelle une fonction récursive qui cherche et retourne le chiffre de chance"
svp aidez moi

5 réponses

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
Modifié par ccm81 le 17/02/2011 à 18:43
bonsoir

en vba deux fonctions recursives pour le même prix

Long est un type d'entier
ByVal indique que le parametre est passé par valeur
Len(a) > renvoie la longueur de la chaine a
round(a) > renvoie la partie entiere du réel positif a
Val(a) > renvoie la valeur numérique de la chaine a
str(a) > renvoie la chaine représentée par le nombre a
Mid(a,i,1) > renvoie le caractère de rang i dans la chaine a
LTrim(a) > renvoie la chaine a debarassée des espaces à gauche

RQ. avant d'envoyer s a la fonction chance, s doit etre debarassé de des "/"


Function sommech(ByVal s As String) As Long  
  If Len(s) = 1 Then  
    sommech = Round(Val(s))  
  Else  
    sommech = Round(Val(Left(s, 1))) + sommech(Right(s, Len(s) - 1))  
  End If  
End Function  

Function chancerec(ByVal s As String) As Long  
  If Len(s) = 1 Then  
    chancerec = s  
  Else  
    chancerec = chancerec(LTrim(Str(sommech(s))))  
  End If  
End Function


a toi de traduire
1
merci c tré gentil de ta par
0
wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 1
15 févr. 2011 à 11:44
hum...
explique moi comment t'aider a créer l'algorithme ? si on ne sait pas quel langage tu utilise...
0
flo13142 Messages postés 71 Date d'inscription mardi 7 décembre 2010 Statut Membre Dernière intervention 21 février 2011 18
15 févr. 2011 à 11:46
Salut,

Quelle partie te bloques dans le problème? En quel langage dois-tu l'écrire?
0
bsr,
c la partie recursive qui me bloque tjr (je veu juste un algorithme càd sauf lé démarche donc aucun langage n'est exigé merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flo13142 Messages postés 71 Date d'inscription mardi 7 décembre 2010 Statut Membre Dernière intervention 21 février 2011 18
16 févr. 2011 à 09:54
en considérant que la somme de tes chiffres est < 100, ce qui est le cas de 99/99/9999

nombre = 0
pour i = 0 à longueur (entree)
nombre += entree[i];
fin pour

chance ( nombre);

function chance (nombre)
{
 si nombre < 10 alors 
	retourne nombre;
 sinon
   tmp = nombre / 10 + nombre  % 10	
   chance (tmp); 
 fin si
}

0