Somme des variable dans tableau en C [Fermé]

- - Dernière réponse :  cole - 20 févr. 2010 à 21:28
Bonjour,
voila jai un exercice qui consiste a faire une somme de variable dans un tableau en C, jai programmé mais sa plante et je ne trouve pas l'erreur :s
voila ce que jai fait

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

int sommeTableau(int tableau[], int i)
{
int resultat = 0;
tableau[5] = {20, 100, 50, 80, 1};
for (i = 0; i < 5; i++)
{
resultat = i + i++
}
return resultat;


int main(int argc, char *argv[])
{
int resultat = 0;
int tableau[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
resultat = sommeTableau(tableau);
printf("la somme est de %d\n", resultat);

system("PAUSE");
return 0;
}
Afficher la suite 

9 réponses

Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1587
0
Merci
Salut,
Deux erreurs :
Première : L'erreur vient de là : resultat = i + i++
Il manque un point virgule de fin d'instruction. De plus, je ne vois pas l'intérêt de cette ligne.
Si tu veux sommer les éléments du tableau, tu dois plutôt utiliser tableau[i] qui contient le i+1ème élément du tableau.
Deuxème : tableau[5] = {20, 100, 50, 80, 1};
Que veux-tu faire ???
Cette instruction n'est valable qu'à la déclaration de la variable donc int tableau[5]={20,...} (d'ailleurs la taille est facultative).
De plus, si tu redéfinis la variable pourquoi envoyer tableau en argument ?

Cdlt,
0
Merci
c'est vrai dans la fonction sommetableau le tableau[5] = { ... } se servai a rien, fallait remplacer par une variable; c'est fait sa donne sa :
mais il ya toujours une erreur : 19 C:\Dev-Cpp\main3.c too few arguments to function `sommeTableau'
j'ai pas compris cette erreur

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

int sommeTableau(int tableau[], int i)
{
int resultat = 0;
tableau[i];
for (i = 0; i < 5; i++)
{
resultat = i + i++;
}
return resultat;
}

int main(int argc, char *argv[])
{
int resultat = 0;
int tableau[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
resultat = sommeTableau(tableau);
printf("la somme est de %d\n", resultat);

system("PAUSE");
return 0;
}
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1587
0
Merci
Je remets pratiquement les mêmes remarques :

tableau[i];
A quoi ça sert ? Cette instruction est complètement inutile.

resultat = i + i++;
Que veux-tu faire avec ça ? Il faut utiliser les éléments du tableau si tu veux en faire la somme, là tu n'utilises que la variable i.

int sommeTableau(int tableau[], int i)
Ta fonction admet deux arguments en paramètre. Pourtant lorsque tu appelles ta fonction, tu n'en mets qu'un seul. D'où le message de ton compilateur.
0
Merci
ok, j'ai essayé de changé, cette foi sa compile mais sa ne donne pas ce que je veux, je sais je suis plus tres loin mais je ne vois pas comment travailler sur les variable du tableau , est ce qu'il faut faire une boucle?
voici le code

int sommeTableau(int tableau[], int taille)
{
int resultat = 0, i = 0;
while (i < taille)
{
resultat = tableau[i] + tableau[i];
i++;

}
return resultat;
}

int main(int argc, char *argv[])
{
int resultat = 0, tailledutableau = 10;
int tableau[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
resultat = sommeTableau(tableau, tailledutableau);
printf("la somme est de %d\n", resultat);

system("PAUSE");
return 0;
}
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1587
0
Merci
resultat = tableau[i] + tableau[i];
Ceci met dans resultat l'indice d'élément i du tableau et le multiplie par deux. Il ne récupère pas la somme précédemment calculer.
Mais ça brûle ;-))).
0
Merci
sa me donne 200, jcomprend pas... :o encor un petit indice et je trouverai bien ...
mon prof m'avait dit que c'était facile les tableaux, je vais le tuer mdr
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1587
0
Merci
Bien sûr que ça donne 200.
A chaque itération tu mets dans resultat le double de l'élément du tableau. Donc lors de la dernière itération, tu vas faire 2*100=100.
Que penses-tu de la ligne suivante ?
resultat = resultat + tableau[i];
;-))).
Cdlt,
Messages postés
98
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
9 janvier 2019
97
0
Merci
Il suffit à priori de remplacer:


resultat = tableau[i] + tableau[i];


par:


resultat = resultat+ tableau[i];

Bon courage!

Eric.
0
Merci
franchement chapeau, c'était évident quand on voit la réponse (jai tapé plusieur foi ma tete telment c'était evident) i mresque a faire la moyenne des valeurs contenu dans le tableau, puis crée un 2em tableau et copier les variable du 1er T dans le second, je doi crée une constante valeurMax pour mettre les valeur du tableau a 0 quand celles ci dépasse la valeur max, et enfin crée une fonction qui ordonne les valeur du tableau dans lordre croissant. j'espere que j'y arriverai tout seul. encor merciiii fiddy