Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide pour un programme C

    13 décembre 2015 à 2:17:16

    Bonjour tout le monde,

    je suis debutant en programmation C et je veux améliorer ce programme en demandant à l'utilisateur d'entrer un nombre entier N et par la suite le programme fait la somme de ses chiffres et si le résultat de cette somme est supérieur à un chiffre on refait la somme de ces chiffres.

    Exemple:

    N= 12345 ----->  S= 1+2+3+4+5 ---------> S= 15 ------------> S=6

    #include <stdio.h>
    main()
    {
     /* Déclarations */
     int T[50]; /* tableau donné  */
     int N;     /* dimension      */
     int I;     /* indice courant */
     long SOM;  /* somme des éléments - type long à cause */
                /* de la grandeur prévisible du résultat. */
     /* Saisie des données */
     printf("Dimension du tableau (max.50) : ");
     scanf("%d", &N );
     for (I=0; I<N; I++)
        {
         printf("Elément %d : ", I);
         scanf("%d", &T[I]);
        }
      /* Affichage du tableau */
     printf("Tableau donné :\n");
     for (I=0; I<N; I++)
         printf("%d ", T[I]);
     printf("\n");
      /* Calcul de la somme */
     for (SOM=0, I=0; I<N; I++)
         SOM += T[I];
      /* Edition du résultat */
     printf("Somme de éléments : %ld\n", SOM);
     return 0;
    }
    

    Merci d'avance et bonne journée

    • Partager sur Facebook
    • Partager sur Twitter
      13 décembre 2015 à 10:16:47

      Tu ferais mieux de faire comme ça EDIT (Oulah, le code était pas fonctionnel du tout !) :

      int somme(int n)
      {
         int s;
         do
         {
            s = 0;
            while(n>=10)
            {
               s += n%10;
               n/=10;  
            }
            s += n;
            if(s>=10)
               n=s;
         }while(s>=10);
         return s;
      }

      Ou alors avec une fonction récursive :

      int somme(int n)
      {
          if(n>=10)
          {
              int s = n % 10 + somme(n/10);
              return s >= 10 ? somme(s) : s;
          }
          else
              return n;
      }

      -
      Edité par jtruc34 15 décembre 2015 à 23:53:53

      • Partager sur Facebook
      • Partager sur Twitter
        13 décembre 2015 à 16:27:14

        J'up au cas où tu aurais vu le message avant que je l'édite.
        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2015 à 17:32:44

          Merci bien jtruc34 pour la réponse rapide c'est très gentil de ta part je vais essayer ça et je te mets au courant ;)
          • Partager sur Facebook
          • Partager sur Twitter
            13 décembre 2015 à 17:35:06

            Ah oui, si quelqu'un sait, laquelle des deux fonctions est la plus efficace ?
            • Partager sur Facebook
            • Partager sur Twitter

            Aide pour un programme C

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown