erreur dans un programme simple (resolu) - C - Programmation
Marsh Posté le 09-08-2007 à 16:30:02
Et quelle est cette erreur?
Sinon, tu déclares un tableau de 4, mais tu ne mets que 3 valeurs, serait-ce cela?
Marsh Posté le 09-08-2007 à 16:31:27
syntax error before ']' token
il s'agit donc dans l'appel de la fonction je suppose
Marsh Posté le 09-08-2007 à 16:32:13
Bah ouais, tu devrais pas faire ça plutot?
somme=sommeTableau(tableau,4);
Marsh Posté le 09-08-2007 à 16:34:17
c'est déjà mieux puisque le programme s'execute et se compile mais l'addition du tableau n'est pas correct.
Marsh Posté le 09-08-2007 à 16:35:42
Sinon, tu déclares un tableau de 4, mais tu ne mets que 3 valeurs, serait-ce cela?
Valeurs additionnées:
tableau[0]->10;
tableau[1]->15;
tableau[2]->3
tableau[3]->?????
Marsh Posté le 09-08-2007 à 16:36:24
bah normalement non puisque il doit prendre la valeur par défaut, c'est à dire 0.
Marsh Posté le 09-08-2007 à 16:37:33
ReplyMarsh Posté le 09-08-2007 à 16:42:50
Tu n'initialises pas ta variable somme dans sommeTableau. Essaie avec
somme = 0;
Marsh Posté le 09-08-2007 à 16:45:15
P...n, il faudrait que tu te sortes les doigts du luc de temps en temps aussi.
Parce là, c'est une erreur de pur débutant : variable non initialisée (j'ai dis variable, pas tableau).
Edit: arf, grilled.
Marsh Posté le 09-08-2007 à 16:45:21
merci à toi durkheim ( par contre il prend bien la valeur par defaut 0 lorsque tu ne mets pas assez de valeurs)
Marsh Posté le 09-08-2007 à 16:49:01
Ben ça ça dépend du compilateur. Là t'as un compilo C++ qui le fait, mais en théorie en C c'est pas censé arriver. Donc, tu dois y faire attention, car si tu compiles ça avec un compilo C uniquement, tu auras une belle erreur.
Marsh Posté le 09-08-2007 à 23:15:54
durkheim a écrit : Ben ça ça dépend du compilateur. Là t'as un compilo C++ qui le fait, mais en théorie en C c'est pas censé arriver. Donc, tu dois y faire attention, car si tu compiles ça avec un compilo C uniquement, tu auras une belle erreur. |
Pas forcément, mais surement le jour où il présentera son prog à son prof.
Marsh Posté le 10-08-2007 à 08:13:59
Hmm vous êtes sûrs que le standard ne dit pas que les slots non initialisés explicitement sont mis à 0 ? C'est comme ça si le tableau est global (ça c'est sûr à 100%), mais c'est vrai que j'ai un doute pour les tableaux locaux.
Marsh Posté le 10-08-2007 à 10:08:08
J'en suis sûr absolument sûr. Pour le C non, pour le C++ oui.
Marsh Posté le 10-08-2007 à 10:34:20
En C, il me semble que la norme dit que les variables globales sont initialisées à 0, pas les variables locales.
Maintenant, en Visual C par exemple, en mode debug les variables locales sont initalisées à 0 mais pas en mode Release, ce qui conduit parfois à des surprises ...
Marsh Posté le 10-08-2007 à 11:37:21
utilise des size_t pour représenter les tailles de tableau. Et oui les indices pas initialisés sont mis à zéro.
Marsh Posté le 11-08-2007 à 15:58:20
durkheim a écrit : Ah non, pas en C. Teste avec 3 comme longueur. |
La mouche a raison. L'initialisation se fait bien à 0 pour les éléments non définis d'une initialisation partielle. Le code est correct. L'erreur vient de ce que somme n'est pas initialisé comme indiqué par un compilateur bien réglé :
http://mapage.noos.fr/emdel/codage.htm#cfg_compilo
Citation : n1124 |
Marsh Posté le 09-08-2007 à 16:26:01
Bonjour,
je voudrais que vous m'aidiez à trouvez l'erreur que devc++ me signal lors de la compilation. Le programme ne doit faire qu'une addition des chiffres du tableau.
#include <stdio.h>
#include <stdlib.h>
long sommeTableau(long tableau[], long tailleTableau);
int main(int argc, char *argv[])
{
long tableau[4] = {10, 15, 3}, i = 0, somme;
somme=sommeTableau(tableau[],4);
printf("soit %ld",somme);
return 0;
}
long sommeTableau(long tableau[], long tailleTableau)
{
long i, somme;
for (i = 0 ; i < tailleTableau ; i++)
{
somme=somme+tableau[i];
}
return somme;
}
Merci d'avance
Message édité par lamouche8 le 09-08-2007 à 16:48:15