Mauvais résultat en prog C

Résolu
KunGu Messages postés 1169 Date d'inscription   Statut Membre Dernière intervention   -  
KunGu Messages postés 1169 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   59
 
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   Statut Membre Dernière intervention   59
 
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 1169 Date d'inscription   Statut Membre Dernière intervention   224
 
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 1169 Date d'inscription   Statut Membre Dernière intervention   224
 
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   Statut Membre Dernière intervention   59
 
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 1169 Date d'inscription   Statut Membre Dernière intervention   224
 
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   Statut Membre Dernière intervention   59
 
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 1169 Date d'inscription   Statut Membre Dernière intervention   224
 
ok merci !
0