Aide sur la boucle while en langage C

Fermé
loty91 Messages postés 4 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 1 mai 2011 - 1 mai 2011 à 23:14
 loty91 - 3 mai 2011 à 13:26
Bonjour, j'apprend à programmer en C et j'essaie de faire cet exercice:

Ecrire un programme qui demande à l'utilisateur d'entrer au plus 10 nombres puis qui affiche la somme des nombres entrés.

Pour cela j'ai écrit ce programme mais au moment de l'exécution la somme est toujours fausse(du moins ce n'est jamais ce que j'attendais) et je sais vraiment pas pourquoi.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int nCounter,nNumb,nSum;
nSum=0;
nCounter=1;
while(nCounter<10)
{


printf(" Saisissez le %d éme nombre: ",nCounter);
scanf("%d",&nNumb);
nSum=nSum+nNumb;
nCounter++;
printf("la somme de ces nombres est:\n");
printf("%d+%d=%d\n",nSum,nNumb,nSum+nNumb);
}
system("PAUSE");
return 0;
}

Aidez moi s'il vous plait!!Merci d'avance!



2 réponses

luern Messages postés 88 Date d'inscription jeudi 24 février 2011 Statut Membre Dernière intervention 8 juin 2011 4
1 mai 2011 à 23:36
C'est juste ton printf qui n'est pas bon...

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int nCounter = 1,nNumb = 0,nSum = 0;

    while(nCounter<=10)
    {
        printf("Saisissez le %d eme nombre: ",nCounter);
        scanf("%d",&nNumb);
        printf("%d+%d=",nSum,nNumb);
        nSum+=nNumb;
        printf("%d\n", nSum);
        nCounter++;
        printf("la somme de ces nombres est: %d\n\n", nSum);

    }
    system("PAUSE");
    return 0;
}


Ce code marche (prend l'habitude d'initialiser directement tes valeurs) car l'affichage du nombre calculé est placé... Après que le nombre soit calculé ^^

Ou un code plus proche du tien :

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int nCounter,nNumb,nSum;
    nSum=0;
    nCounter=1;
    while(nCounter<10)
    {
        printf(" Saisissez le %d éme nombre: ",nCounter);
        scanf("%d",&nNumb);
        nCounter++;
        printf("la somme de ces nombres est:\n");
        printf("%d+%d=%d\n",nSum,nNumb,nSum+nNumb);
        nSum=nSum+nNumb;
    }
    system("PAUSE");
    return 0;
}


La calcul se fait après l'affichage, car dans ton affichage même, tu calcule déjà un nombre déjà calculé 8)

Je suis clair ? ^^'
Médite sur ces 2 codes par rapport au tien ;)

PS : Les accents marchent pas en console ^^
0
loty91 Messages postés 4 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 1 mai 2011
1 mai 2011 à 23:54
merci beaucoup!! ça marche mais je ne comprends pas pourquoi la disposition change tout?Surtout pour le deuxième programme?? Je ne sais pas si tu comprends ce que je veux dire. En fait je pensais qu'il ne pouvait afficher nSum que s'il était déja défini?
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
2 mai 2011 à 13:25
mais il est défini.

si tu veux bien comprendre ce que fait ton programme et ceux de luern, prend une feuille de papier, un crayon et une gomme.

Ensuite, mets toi "à la place" de l'ordinateur qui va lire ton code.

Lorsque tu déclare une variable, note là.

lorsque tu donnes / change une valeur de ta variable, écris le à coté de ta variable, efface la valeur précédente avec ta gomme.

et sur une partie de la feuille tu fais l'"écran" où tu écriras ce que fais printf exactement.

essaye déjà ça et regarde si ça colle avec le vrai résultat.

si ça ne marche pas, écris ce que tu croyais obtenir (toutes les étapes) et on verra.
0
ok merci je vais essayer ça!!
0