Les tableaux

Résolu/Fermé
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017 - 13 juin 2016 à 09:08
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017 - 13 juin 2016 à 17:39
Bonjour,
Je voudrais savoir pourquoi ce code ne marche pas s' il vous plait !!!

double multiplication(double tableau[], int tailleTableau)
{
int i;
double produit = 1;

return produit *= tableau[i];
}


int main()
{
int i;
double produit = 1;
double tableau[4] = {6,5,3,2};

for(i = 0; i < 4; i++)
{
produit *= tableau[i];
}

double resultat = multiplication(tableau, 4);

printf("Le produit est de %.2f\n", resultat);

return 0;
}



2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 13/06/2016 à 09:48
Bonjour,

return produit *= tableau[i];
i n'est pas initialisé.
Soit tu mets i=0; par exemple. Soit tu fais une boucle for. Mais il doit être initialisé à un moment ou à un autre.

Pour les prochaines fois, merci d'utiliser la balise <code c>, sinon c'est illisible.
Exemple : <code c>/*ici tu mets ton code*/</code>.

Cdlt,


Google is your friend
0
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017
13 juin 2016 à 16:04
Bonsoir monsieur,
je vous remercie pour votre remarque pertinente.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
13 juin 2016 à 10:50
Bonjour,

Ce code effectue la multiplication des éléments du tableau qu'il met dans une variable nommée 'produit'.
Puis semble de faire la même chose en passant par une fonction, et là c'est la cata, cela fait n'importe quoi.
Pour finir le résultat de la méthode 'cata' est affiché, la fonction aurait dû être :
double multiplication( double const tableau[] , int tailleTableau )  {
    double produit = 1; 
    for ( int i = 0 ; i < tailleTableau ; i++ )
      produit *= tableau[i];
    return produit;
} 
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 juin 2016 à 11:26
Dommage de mettre un int i; dans la boucle for.
C'est autorisé en C99 effectivement. Mais, on pert en portabilité pour 1 ligne d'économisée.
Très bien pour le double const tableau[]. Le const pouvait aussi s'appliquer au tailleTableau :-).
0
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017
Modifié par jeandchanel le 13/06/2016 à 16:53
Bonsoir, monsieur Dalfab.
je vous remercie beaucoup pour cette correction. Mon erreur se trouvait au niveau du "return" :
 return produit; 
encore une fois merci.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017
13 juin 2016 à 16:14
Il n'y a pas que ça.
Si tu remplaces uniquement la ligne du return par return produit; ta fonction renverra 1 systématiquement. On est donc très loin du produit.
D'où la boucle for proposée par Dalfab
0
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
13 juin 2016 à 17:39
Oui je l'avoue, ma boucle se trouvait plutôt dans la fonction " main " et non dans la fonction multiplication() !!! Merci pour tout.
0
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017
Modifié par jeandchanel le 13/06/2016 à 16:16
double multiplication(double tableau[], int tailleTableau)
{
     int i = 0;
     double produit = 1;

     for(i = 0; i < 4; i++)
     {
        produit *= tableau[i];
     }

     return produit;
}

int main()
{
     int i = 0;
     double produit = 1;
     double tableau[4] = {6,5,3,2};

     double resultat = multiplication(tableau, 4);

     printf("Le produit est de %.2f\n", resultat);

     return 0;
} 

0