Solution algorithmique pour ce problème

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

  • Votes
  • Date
  • Date décroissante
  1. bonsoir

    en vba deux fonctions recursives pour le même prix
    où
    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
  2. hum...
    explique moi comment t'aider a créer l'algorithme ? si on ne sait pas quel langage tu utilise...
    1. Salut,

      Quelle partie te bloques dans le problème? En quel langage dois-tu l'écrire?
      1. 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
        1. 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
          }