Programation en C

Fermé
Thib2 Messages postés 27 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 27 avril 2015 - Modifié par Whismeril le 7/01/2015 à 19:07
Thib2 Messages postés 27 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 27 avril 2015 - 8 janv. 2015 à 16:42
Bonjour à tous, je suis debutant en C

ce qui suivera est un simple exercice mais j'assaye d'additionner les valeur de mon tableu mais je n'y arrive pas avec ceci
:

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

 int sommeTableau(int tableau[], int tailleTableau);

int main()
{
int tableau[4];
tableau[0] = 21;
tableau[1] = 35;
tableau[2] = 58;
tableau[3] = 99;

sommeTableau(int tableau[], int tailleTableau);
printf("%d", sommeTableau);

getch();
return 0;

}



int sommeTableau(int tableau[], int tailleTableau)
{
tailleTableau = tableau[0] + tableau[1] + tableau[2] + tableau[3];
} 


Merci d'avance de votre aide :D

EDIT: Ajout de la coloration syntaxique.

1 réponse

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié par [Dal] le 8/01/2015 à 11:40
Bonjour Thib2,

La compilation de ton code échoue avec des erreurs de syntaxe, et affiche aussi de nombreux warnings (avec gcc, compile avec une option du type -Wall pour les afficher).

../src/main.c: In function `main':
../src/main.c:14:14: error: expected expression before `int'
../src/main.c:14:14: error: too few arguments to function `sommeTableau'
../src/main.c:4:6: note: declared here
../src/main.c:15:1: warning: format `%d' expects argument of type `int', but argument 2 has type `int (*)(int *, int)' [-Wformat]
../src/main.c:17:1: warning: implicit declaration of function `getch' [-Wimplicit-function-declaration]
../src/main.c:8:5: warning: variable `tableau' set but not used [-Wunused-but-set-variable]
../src/main.c: In function `sommeTableau':
../src/main.c:27:1: warning: control reaches end of non-void function [-Wreturn-type]


Voilà une liste de problèmes, dont certains signalés par ces messages :

- tu mets dans ta déclaration de fonction un paramètre int tailleTableau (la taille de ton tableau est de 4 dans ton code), mais tu ne t'en sert pas dans la fonction, puisque tu codes en dur une addition des 4 premiers éléments d'un tableau. Ta fonction ne pourra donc additionner que 4 premiers éléments d'un tableau.
- tu ne retournes pas le résultat de l'addition alors que ta fonction est sensée retourner un int, qui, logiquement, devrait être le résultat. Au lieu de cela, tu mets le résultat dans int tailleTableau, variable locale à ta fonction, écrasant la taille du tableau, et comme tu n'en fait rien, le résultat de l'addition est perdu au retour de la fonction
- tu dois donc utiliser return en fin de fonction sommeTableau pour retourner le résultat de l'addition et, dans main, récupérer ce qui est renvoyé par la fonction pour l'afficher
- lorsque tu appelles la fonction sommeTableau dans main, tu dois y passer des paramètres, pas des déclarations, donc sommeTableau(tableau, 4) par exemple
- ton printf attend un int, alors que tu lui passes le nom de la fonction, il faut lui passer un int (donc le résultat renvoyé par la fonction)
- getch() n'est pas standard, et ta déclaration de main devrait spécifier void, puisque tu n'exploite pas de paramètres pour main

cela donne un truc du genre :

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

long int sommeTableau(int tableau[]);

int main(void) {
 int tableau[4];
 tableau[0] = 21;
 tableau[1] = 35;
 tableau[2] = 58;
 tableau[3] = 99;

 printf("%ld\n", sommeTableau(tableau));

 return 0;
}

long int sommeTableau(int tableau[]) {
 return tableau[0] + tableau[1] + tableau[2] + tableau[3];
}


c'est mieux que ta fonction retourne un long int, ou un type de taille supérieure à int, et tu pourrais vérifier qu'il n'y a pas de débordement de capacité.

j'ai supprimé le 2ème paramètre, vu que tu ne t'en sert pas, en réalité.

si tu veux faire une vraie fonction qui va effectuer la somme de tableaux de nombres int quelle qu'en soit la taille, il faut que tu crées une boucle, additionnant successivement les valeurs de chaque case du tableau dans une variable, puis retourner le contenu de la variable.

Dal
1
Thib2 Messages postés 27 Date d'inscription vendredi 12 décembre 2014 Statut Membre Dernière intervention 27 avril 2015
8 janv. 2015 à 16:42
Merci Dal pour toutes ces explication :D
0