Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1553 connectés 

  FORUM HardWare.fr
  Programmation
  C

  erreur dans un programme simple (resolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur dans un programme simple (resolu)

n°1597791
lamouche8
Posté le 09-08-2007 à 16:26:01  profilanswer
 

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.  

Citation :

#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
mood
Publicité
Posté le 09-08-2007 à 16:26:01  profilanswer
 

n°1597799
durkheim
Posté le 09-08-2007 à 16:30:02  profilanswer
 

Et quelle est cette  erreur?

 

Sinon, tu déclares un tableau de 4, mais tu ne mets que 3 valeurs, serait-ce cela?


Message édité par durkheim le 09-08-2007 à 16:31:28
n°1597801
lamouche8
Posté le 09-08-2007 à 16:31:27  profilanswer
 

syntax error before  ']' token
il s'agit donc dans l'appel de la fonction je suppose


Message édité par lamouche8 le 09-08-2007 à 16:32:12
n°1597802
durkheim
Posté le 09-08-2007 à 16:32:13  profilanswer
 

Bah ouais, tu devrais pas faire ça plutot?
 
somme=sommeTableau(tableau,4);

n°1597807
lamouche8
Posté le 09-08-2007 à 16:34:17  profilanswer
 

c'est déjà mieux puisque le programme s'execute et se compile mais l'addition du tableau n'est pas correct.

n°1597809
durkheim
Posté le 09-08-2007 à 16:35:42  profilanswer
 

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]->?????


Message édité par durkheim le 09-08-2007 à 16:36:39
n°1597810
lamouche8
Posté le 09-08-2007 à 16:36:24  profilanswer
 

bah normalement non puisque il doit prendre la valeur par défaut, c'est à dire 0.

n°1597812
durkheim
Posté le 09-08-2007 à 16:37:33  profilanswer
 

Ah non, pas en C. Teste avec 3 comme longueur.

n°1597815
lamouche8
Posté le 09-08-2007 à 16:39:00  profilanswer
 

Apparement le probleme ne vient pas de la non plus.

n°1597818
lamouche8
Posté le 09-08-2007 à 16:41:21  profilanswer
 

tu ne vois rien d'autre?

mood
Publicité
Posté le 09-08-2007 à 16:41:21  profilanswer
 

n°1597821
durkheim
Posté le 09-08-2007 à 16:42:50  profilanswer
 

Tu n'initialises pas ta variable somme dans sommeTableau. Essaie avec  
somme = 0;

n°1597823
tpierron
Posté le 09-08-2007 à 16:45:15  profilanswer
 

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.


Message édité par tpierron le 09-08-2007 à 16:47:04
n°1597824
lamouche8
Posté le 09-08-2007 à 16:45:21  profilanswer
 

merci à toi durkheim ( par contre il prend bien la valeur par defaut 0 lorsque tu ne mets pas assez de valeurs)

n°1597830
durkheim
Posté le 09-08-2007 à 16:49:01  profilanswer
 

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.

n°1598002
Trap D
Posté le 09-08-2007 à 23:15:54  profilanswer
 

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.

n°1598026
matafan
Posté le 10-08-2007 à 08:13:59  profilanswer
 

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.

n°1598051
durkheim
Posté le 10-08-2007 à 10:08:08  profilanswer
 

J'en suis sûr absolument sûr. Pour le C non, pour le C++ oui.

n°1598061
Trap D
Posté le 10-08-2007 à 10:34:20  profilanswer
 

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 ...

n°1598102
Taz
bisounours-codeur
Posté le 10-08-2007 à 11:37:21  profilanswer
 

utilise des size_t pour représenter les tailles de tableau. Et oui les indices pas initialisés sont mis à zéro.

n°1598610
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-08-2007 à 15:58:20  profilanswer
 

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
6.7.8 Initialization
<...>
semantics
<...>
21 If there are fewer initializers in a brace-enclosed list than there are elements or members
of an aggregate, or fewer characters in a string literal used to initialize an array of known
size than there are elements in the array, the remainder of the aggregate shall be
initialized implicitly the same as objects that have static storage duration.


Message édité par Emmanuel Delahaye le 11-08-2007 à 16:13:10

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  erreur dans un programme simple (resolu)

 

Sujets relatifs
Problème avec un script simpleHistoire de package [Resolu]
[Résolu] position d'un div tout en bas d'une pageErreur PHP - débutant
Différence entre membre dans et hors __init__ [RESOLU]Résolu - Arrayliste, exemple COMPLET
[résolu] CSS zoom limité à 30 images ?Tri de réponses chiffre/caractère [resolu]
erreur Move/Delete sur element ouvert[Résolu][MYSQL] lister les doublons + rapidement
Plus de sujets relatifs à : erreur dans un programme simple (resolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR