Mauvais résultat en prog C

Résolu/Fermé
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 - 11 mars 2008 à 22:40
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 - 15 mars 2008 à 12:03
Bonjour,
Mon code devrait me donner la somme de tous les chiffres du tableau, or il me donne seulement le premier chiffre du tableau ! Qu'est-ce qui cloche ? :

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

long sommeTableau(long tableau[], long tailleTableau)
{
    long i;
    for (i = 0 ; i < tailleTableau ; i++)
    {
        long sommetotale = 0;
        static long somme = 0;
        sommetotale = somme + tableau[i];

    return sommetotale;

    }
}

int main(int argc, char *argv[])
{
    long tableau[4] = {14, 58, 32}, toutesLesSommes = 0;
    toutesLesSommes = sommeTableau(tableau, 4);
    printf("La somme de tous les nombres du tableau est de %ld", toutesLesSommes);

system("pause");
return 0;
}

6 réponses

ltstam Messages postés 395 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 28 juin 2010 58
11 mars 2008 à 23:00
salut j'ai récupéré ton code et corriger les erreurs qu'il y avaient.Il y en avaient un max, mais la cause du problème est que tu as inclut le return dans la boucle for.je tenvoie le code corrigé. La somme est 115.
De plus, utilises getch() au lieu de système ("pause").

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

long sommeTableau(long tableau[], long tailleTableau)
{
long i;
long sommetotale = 0;
static long somme = 0;

for (i = 1 ; i <= tailleTableau ; i++)
{
sommetotale = sommetotale + tableau[i];
}
return sommetotale;
}

int main(int argc, char *argv[])
{
long tableau[4] = {14, 58, 32}, toutesLesSommes = 0;
toutesLesSommes = sommeTableau(tableau, 4);
printf("\nLa somme de tous les nombres du tableau est de %d\n", toutesLesSommes);

getch();
return 0;
}
0
ltstam Messages postés 395 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 28 juin 2010 58
11 mars 2008 à 23:03
j'ai compilé le fichier sous dev cpp dans un fichier cpp.Une chose en passant pourquoi prendre comme compteur une variable i de type long, pour une optimisation tu pourrais prendre int ou smallint ou short int.ok? bye
0
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 224
11 mars 2008 à 23:17
Merci ça marche maintenant ! j'ai viré les long et le return de la boucle for et supprimé le static long somme = 0 qui ne servait à rien.
Mais je crois que tu as aussi commis 2 petites erreurs ^^ : dans la boucle for tu as mis i = 1 alors qu'on l'initialise normalement à 0. Et tu as dit que le résultat faisait 115 alors qu'il fait 104 ;-)

PS: Pourquoi as-tu ajouté #include <conio.h> ?
PS2: Merci pour ces réponses rapides !

Voila le code fini :
#include <stdio.h>
#include <stdlib.h>

long sommeTableau(long tableau[], long tailleTableau)
{
    long i;
    long sommetotale = 0;
    for (i = 0 ; i < tailleTableau ; i++)
    {
      sommetotale = sommetotale + tableau[i];
    }
    return sommetotale;


}

int main(int argc, char *argv[])
{
    long tableau[4] = {14, 58, 32}, toutesLesSommes = 0;
    toutesLesSommes = sommeTableau(tableau, 4);
    printf("\nLa somme de tous les nombres du tableau est de %ld\n", toutesLesSommes);

getch()
return 0;
}
0
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 224
11 mars 2008 à 23:19
Oui c'est vrai tu as raison mais je suis le tuto du site du zéro et il utilise toujours des long. Mais quand je programmerait tout seul je ne commettrai plus ces erreurs ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ltstam Messages postés 395 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 28 juin 2010 58
11 mars 2008 à 23:30
tu n'as pas à t'excuser.J'ai appris et je continue d'apprendre comme toi.OK?contactes moi dès que le besoin se fait sentir.OK?Marques la discussion comme résolue(en bas de ton message)
0
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 224
12 mars 2008 à 11:35
avant que je mette résolu tu pour me dire Pourquoi tu as ajouté #include <conio.h> ?
0
ltstam Messages postés 395 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 28 juin 2010 58
12 mars 2008 à 19:33
j'ai mis conio.h a cause de getch() c'est une fonction de la bibliothèque conio.h ok?
0
KunGu Messages postés 1168 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 mars 2013 224
15 mars 2008 à 12:03
ok merci !
0