Produit des éléments d'un tableau

Bonjour,
ce programme ne me donne pas le produit des éléments du tableau il affiche toujiurs M=1 , je ne comprends pas ou est le problème exactement ,pouvez vous m'aider ,merci à tous
#include <stdlib.h>
# include <math.h>
void tab (int *tab2, int n)
{
int i;
printf("entrer le nombre des éléments \n ",n);
scanf("%d",&n);
for (i = 1; i <= n; i++)
{printf (" entrer l’élément \n ", tab2[i]);
scanf ("%d", &tab2[i]);
}
}
int main()
{
int n,b[4],M;
tab(b,n);
M=1;
for(int i=1;i<=n;i++)
{
M=M*b[i];
}
printf("M=%d ",M);

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    Beaucoup d'erreurs...
    tab(b,n);
    Dans tab() : scanf("%d",&n);
    Pour modifier la valeur de n (déclaré dans main()), il faut passer par un pointeur. Donc plutôt : int *n (au lieu de int n).
    Le prototype de tab() donnerait : void tab(int *tab2, int *n)
    Le scanf() deviendrait : scanf("%d",n); (plus besoin d'esperluette).

    for (i = 1; i <= n; i++)
    Les tableaux commencent à l'indice 0. Donc : for(i=0; i<n; i++)

    {printf (" entrer l’élément \n ", tab2[i]);
    Que souhaites-tu faire ? Si tu veux afficher la valeur de i :
    printf("entrez l'élément %d\n", i);
    De même pour le printf() du main().

    Dans ton main(), il manque l'accolade finale. Et il manque le return 0; final aussi.

    Je te conseille vraiment de reprendre un tuto (par exemple celui d'openclassroom) de zéro.

    Note : la prochaine fois, merci d'utiliser la balise <code c> pour poster ton code.
    Exemple :
    <code c>ici tu mets ton code</code>
    1. Bonjour,
      J'ajoute qu'il y a d'autres erreurs, en particulier la variable 'n' dans le main() est aléatoire et n'est pas la même que celle qui est initialisée dans la fonction tab(), car 'n' aurait due être passée par pointeur.
      1. Contributeur
        Pas besoin d'initialiser n si on passe par un pointeur :). C'est la fonction appelée qui s'en occupera.

        --