Produit des éléments d'un tableau

programmation -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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);

A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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>
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Pas besoin d'initialiser n si on passe par un pointeur :). C'est la fonction appelée qui s'en occupera.

--
0