Bonsoir, je suis actuellement le cours sur le langage C proposé par le site, et j'ai un problème avec un exercice sur les tableaux.
Ça consiste à créer un tableau d'un nombre de valeurs choisies (ici 10), de rentrer chacune des valeurs qu'on souhaite additionner entre elles et de renvoyer le résultat sur la console. On doit créer une fonction secondaire appelée sommeTableau qui va faire le calcul.
le programme se déroule sans accroc, jusqu'au moment où il affiche n'importe quoi en résultat... Pourriez-vous m'aider à comprendre où sont mes erreurs ? mon code :
#include<stdio.h>
#include<conio.h>
#include"sommeTbxFncts.h" //header contenant le prototype
int main(int argc, char *argv[])
{
int tab[10] = { 0 }, i = 0, somme = 0;
printf("Entrer 10 chiffres\n");
//On rentre les données
for (i = 0; i < 10; i++)
{
scanf_s("%d", &tab[i]);
}
//affichage somme après calcul
somme = sommeTableau(&tab,10);
printf("%d",somme);
_getch();
return 0;
}
--------------------------------
//la fonction secondaire dans un autre fichier
int sommeTableau(int *tableau[], int *tailleTableau)
{
int i = 0,somme = 0;
for (i = 0; i < tailleTableau; i++)
{
somme = somme + tableau[i];
}
return somme;
}
- Edité par AkaiDenkiKurokenshi 19 septembre 2019 à 20:07:15
int sommeTableau(int *tableau[], int *tailleTableau)
Sache que pour les tableaux tu as deux choix
Soit t[] ou bien *t mais pas les deux sinon il me semble que tu as un pointeur sur un pointeur.
Et pas besoin d initialiser tailleTableau comme etant un pointeur car tu ne cherche pas à modifier la valeur de la taille. Donc travailler sur sa copie ne pose pas de probleme. Mais en soit tu peux faire les deux c'est juste pour la petite remarque.
Moi j'aurai donc fait :
int sommeTableau(int tableau[], int *tailleTableau)
ou
int sommeTableau(int *tableau, int *tailleTableau)
Et je ne mettrais pas *tailleTableau en parametre car tu envoies directement 10 pour la taille dans ton appel.
Tiens moi au courant
Faites aujourd'hui ce que les autres ne veulent pas faire, pour avoir demain ce qu'eux n'auront jamais !
int sommeTableau(int *tableau[], int *tailleTableau)
Sache que pour les tableaux tu as deux choix
Soit t[] ou bien *t mais pas les deux sinon il me semble que tu as un pointeur sur un pointeur.
Et pas besoin d initialiser tailleTableau comme etant un pointeur car tu ne cherche pas à modifier la valeur de la taille. Donc travailler sur sa copie ne pose pas de probleme. Mais en soit tu peux faire les deux c'est juste pour la petite remarque.
Moi j'aurai donc fait :
int sommeTableau(int tableau[], int *tailleTableau)
ou
int sommeTableau(int *tableau, int *tailleTableau)
Et je ne mettrais pas *tailleTableau en parametre car tu envoies directement 10 pour la taille dans ton appel.
Tiens moi au courant
Super merci ! Je voyais vraiment pas d'où venait l'erreur ! Et puis tu m'as rappelé pour les pointeurs.
En ce qui concerne le paramètre de taille, je l'ai initialisé pour pouvoir modifier la taille manuellement sans avoir à repasser par les fichiers autres que main.c.
Je mets en résolu.
- Edité par AkaiDenkiKurokenshi 20 septembre 2019 à 0:58:10
int sommeTableau(int tableau[], int tailleTableau);
Aurait été suffisant !
Absolument
D'ailleurs il suffit de copier-coller cela depuis le cours...
Problème additions de valeur tableau
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Aurait été suffisant !