Produit des éléments d'un tableau

Fermé
programmation - Modifié par programmation le 5/03/2016 à 11:00
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 mars 2016 à 14:32
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 mars 2016 à 11:16
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
6 mars 2016 à 14:15
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 mars 2016 à 14:32
Pas besoin d'initialiser n si on passe par un pointeur :). C'est la fonction appelée qui s'en occupera.

--
0