Je fait en ce moment l'éxo qui consiste a a obtenir la moyenne des valeurs d'un tableau j'ai réussis mais j'ai un petit soucis
Tout d'abord voici le code (oui je me complique avec des while mais je doit faire comme ça pour le moment voila )
double moyenneTableau(int *tableau, int tailleTableau)
{
int i;
int somme;
double moyenne;
moyenne = 0;
somme = 0;
i = 0;
while(i < tailleTableau)
{
somme = somme + tableau[i];
i++;
}
moyenne = somme / tailleTableau;
return (moyenne);
}
int main()
{
int tab[5] = {11, 16, 8, 13, 12};
double moyen;
moyen = moyenneTableau(tab,5);
printf("%.3f\n", moyen);
}
Ce code fonctionne mais voila si je rajoute .5 a 11 et .5 a 13 qui donne {11.5, 16, 8, 13.5, 12}
La moyenne est normalement de 12.2
saut que mon tableau est un int donc si je contourne le problème par un double (mon tab de main deviens un double) et bah cette fois ci j'ai un nouveau soucis car dans le prototype de la fonction fournis avec l'éxo
double moyenneTableau(int *tableau, int tailleTableau)
tableau est un int vous me suivez ?
Même en modifiant la variable somme de ma fonction moyenne() en double sa ne change rien
Et quand je modifie le type de tab qui se situe dans le main en double j'ai ce message d'erreur
ft_putstr.c:73:28: warning: incompatible pointer types passing 'double [5]' to parameter of type 'int *' [-Wincompatible-pointer-types]
moyen = moyenneTableau(tab,5);
^~~
ft_putstr.c:51:28: note: passing argument to parameter 'tableau' here
double moyenneTableau(int *tableau, int tailleTableau)
Qui reviens a ce que j'ai dit plus haut justement le paramètre de la fonction moyenne() est un int est le tab ici est un double
Je me demande si ce que j'essaye de faire est tout simplement possible
void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
{
int i;
i = 0;
valeurMax = 45;
while(i < tailleTableau)
{
printf("%d ", tableau[i]);
i++;
if(tableau[i] == valeurMax)
{
tableau[i] = 0;
}
}
}
int main()
{
int tab[5] = {14,22,43,65,55};
maximumTableau(tab,5,45);
}
mon if n'est pas pris en considération pourtant je lui déclare bien le tableau avec mon index qui va parcourir les case jusqu'a trouver la valeur == a valeur max que j'initialise en appelant ma fonction c'est comme sa que sa marche selon ce que j'ai compris et non ! pourtant j'affiche bien mes valeurs aucun soucis la dessus
EDIT : ah mais j'ai compris quand il arrive au if il a déjà finis de lire la boucle donc 45 n'est pas égal a 55 donc il faut que je trouve le moyen de revenir au début avant d'entrée dans le if
EDIT : Problème régler je m'était tromper de signe je donne le code au cas ou
void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
{
int i;
i = 0;
valeurMax = 45;
while(i < tailleTableau)
{
if(tableau[i] > valeurMax)
tableau[i] = 0;
printf("%d ", tableau[i]);
i++;
}
}
int main()
{
int tab[5] = {14,76,43,65,49};
maximumTableau(tab,5,45);
}
- Edité par Bintou Karah 14 août 2019 à 2:19:58
Soucis avec le double
× 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.