IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Calcul récursif de la somme des chiffres d'un entier


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Calcul récursif de la somme des chiffres d'un entier
    Bonjour
    Comment puis-je programmer en Pascal une procédure récursive qui calcule la somme des chiffres d'un entier?

    Merci

  2. #2
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Bonsoir,

    Principe : a + b = a + (b - 1) + 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Somme(a, b : entier) : entier
    Début
      Si b = 0 alors 
        Retourner a;
      Sinon 
        Retourner 1 + Somme(a, b - 1);
      FinSi
    Fin
    --
    Wachter
    Code parrain certification Voltaire : NTMPH759

  3. #3
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour

    Surtout qu'il faut faire la somme des chiffres d'un entier, il faut d'abord penser a extraire ces chiffres avant de les sommer entre eux
    Avec cette fonction, extraction deux par deux et sommer avec une somme globale chaque somme.

    Mais je crois que ce que demande l'énoncé est une fonction qui prend en paramètre l'entier et qui renvoie la somme des chiffres

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  4. #4
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Citation Envoyé par krachik Voir le message
    Bonjour

    Surtout qu'il faut faire la somme des chiffres d'un entier, il faut d'abord penser a extraire ces chiffres avant de les sommer entre eux
    Avec cette fonction, extraction deux par deux et sommer avec une somme globale chaque somme.
    C'est faux ! Prenons un exemple :
    n = 123
    s1 = 1 + 2 s1 = 3
    s2 = 2 + 3 s2 = 5
    s = s1 + s2 s = 8 au lieu de 6 !
    Citation Envoyé par krachik Voir le message
    Mais je crois que ce que demande l'énoncé est une fonction qui prend en paramètre l'entier et qui renvoie la somme des chiffres
    À mon avis, une fonction récursive est censée faire une seule chose, pas plus !

    --
    Wachter
    Code parrain certification Voltaire : NTMPH759

  5. #5
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    Citation Envoyé par Wachter Voir le message
    C'est faux ! Prenons un exemple :
    n = 123
    s1 = 1 + 2 s1 = 3
    s2 = 2 + 3 s2 = 5
    s = s1 + s2 s = 8 au lieu de 6 !
    Si on a bien compris ta fonction a savoir faire la somme de deux entiers en voyant ce que j'ai dit :
    Citation Envoyé par krachik
    Avec cette fonction, extraction deux par deux et sommer avec une somme globale chaque somme.
    On comprendrait que quand je dis 'extraction deux par deux' que je dis par exemple si on a 123 comme tu dis l'extraction doit être 1 et 2 et ensuite 3 et 0 (a moins que ce j'ai dit n'était pas très clair ) ou si on a 1234 ça serait plutôt 1 et 2 et 3 et 4.

    À mon avis, une fonction récursive est censée faire une seule chose, pas plus !
    --
    Wachter
    D'accord avec toi
    La encore excuses moi de jouer sur les mots
    Citation Envoyé par krachik
    Mais je crois que ce que demande l'énoncé est une fonction qui prend en paramètre l'entier et qui renvoie la somme des chiffres
    je n'ai pas écrit une fonction récursive sachant qu'il y a extraction et calcul de somme, pour être plus claire une fonction qui prend un entier et retourne un autre entier(somme des chiffres de l'entier passé en paramètre) et c'est dans cette fonction qu'on calculera la somme des chiffres après extraction.

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  6. #6
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Citation Envoyé par krachik Voir le message
    je n'ai pas écrit une fonction récursive sachant qu'il y a extraction et calcul de somme, pour être plus claire une fonction qui prend un entier et retourne un autre entier(somme des chiffres de l'entier passé en paramètre) et c'est dans cette fonction qu'on calculera la somme des chiffres après extraction.
    Bien que tu n'as pas écrit fonction récursive, je sous-entendais cela, sinon on sort complètement du sujet !

    Bref, voici la version itérative de l'algorithme de résolution de cet exercice, et je laisse le soin au posteur du message d'écrire sa version récursive, quoique ce n'est pas toujours évident de passer de l'itératif vers le récursif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Lire (nombre);
     
    somme = 0;
    Tant que (nombre > 0)
      i = nombre % 10;
      somme = somme + i;
      nombre = nombre / 10;
    Fin Tant que
     
    Afficher(somme);
    --
    Wachter
    Code parrain certification Voltaire : NTMPH759

  7. #7
    Membre habitué Avatar de bs.box
    Inscrit en
    Mai 2008
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 174
    Points : 173
    Points
    173
    Par défaut Salut,
    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        function _SommeChiffres_(Const nbr :Integer) :Integer;
        begin
          if nbr>0
             then _SommeChiffres_ := ( nbr mod 10 ) + _SommeChiffres_( nbr div 10 )
             else _SommeChiffres_ := 0
        end;
    a+
    ______________________________________________________________________
    Le sketch qui m'a marqué le plus! écoutez les programmeurs : Site de Yan Marchal

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/03/2012, 00h18
  2. Calcul de somme des chiffres de nombre 2^1000
    Par mouradj2006 dans le forum Mathématiques
    Réponses: 12
    Dernier message: 27/02/2012, 11h45
  3. [XL-2007] Fonction calculant la somme des chiffres des cellules d'une même couleur
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2010, 00h23
  4. Fonction de calcul de somme des chiffres d'un entier
    Par sam343 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2009, 17h35
  5. template XSL qui calcule la somme des chiffres d'un nombre
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/04/2009, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo