1
votes

Somme des chiffres avec cas de test en C

J'essaie de trouver la somme des chiffres avec les cas de test. Mais le problème est qu'après avoir trouvé une somme , cette somme s'ajoute à la prochaine somme mais je n'ai qu'une somme code> du chiffre de ces chiffres. Veuillez aider. Voici mon code:

3
1234
10
2347
16
8744
23

Et voici ma sortie:

3
1234
10
2347
26
8744
49

Pourquoi ma précédente somme s'ajoutant à la prochaine somme ? Je ne comprends pas.

Ma sortie souhaitée:

#include <stdio.h>

int main() {
    int t, n, i, r, sum=0;
    scanf("%d", &t);

    for(i=0; i<t; i++) {
        scanf("%d", &n);
        while(n>0) {
            r = n % 10;
            sum = sum + r;
            n = n / 10;
        }
        printf("%d\n", sum);
    }

    return 0;
}



2 commentaires

De plus, faites r = 0 aussi


réinitialiser la valeur de sum à chaque itération où vous prenez une nouvelle entrée utilisateur


3 Réponses :


0
votes

Au début de votre boucle, définissez sum sur 0 . Ainsi, avant de prendre la somme sur le prochain ensemble d'éléments, il est initialisé à zéro.

for(i=0; i<t; i++) 
  { 
    sum = 0;
    scanf("%d", &n);


0 commentaires

0
votes

Vous devez définir votre sum = 0; sur la première ligne de la boucle for .


0 commentaires

2
votes

Problème:

Votre variable sum est définie sur 0 au démarrage du programme et vous ajoutez la somme de chaque cas de test dans la même variable sans nettoyer le résultat du cas de test précédent (en définissant sum = 0 avant le début du cas de test suivant.)

Solution possible:

Initialisez votre variable sum avant le début d'un cas de test.

Code:

for(i=0; i<t; i++)
{
    scanf("%d", &n);

    sum = 0; //Set sum = 0

    //Test Case started in while loop
    while(n>0) {
        r = n % 10;
        sum = sum + r;
        n = n / 10;
    }
    printf("%d\n", sum);
}


0 commentaires