#include <stdio.h>
#include <stdlib.h>
int sommeTableau(int tableau[],int tailleDetableau);
int main()
{
int tableau[3]={3,8,2};
printf("%d",sommeTableau(tableau,3));
return 0;
}
int sommeTableau(int tableau[],int tailleDetableau)
{
for(int i=tailleDetableau-1;i>0;i--)
{
tableau[i-1]+=tableau[i];
printf("%d",tableau[0]);
}
}
bonjour , j ai essaye de faire l exo 1 du chapitre des tableaux( language c) le cours de mr nebra j ai essaye avec ce prg ms pas de resultat,veuillez me guider vers l'erreur svp.en fait ,il me donne la valeur 12 qui correspond àla premiere valeur de tableau[0] et merci d avance
- Edité par NouhaylaZakaria 26 août 2021 à 18:21:53
Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
Ta fonction est censé retourner la somme des éléments du tableau, or elle ne retourne rien !
Il faut faire un retour sur le chapitre des fonctions ou il y a l'exemple de la fonction triple qui retourne le triple de la valeur passé en paramètre :
int triple(int nombre)
{
int resultat = 0;
resultat = 3 * nombre; // On multiplie le nombre fourni par 3
return resultat; // On retourne la variable resultat qui vaut le triple de nombre
}
C'est une façon peu orthodoxe de faire la somme des éléments d'un tableau. Le pire est que ça fonctionne ... D'habitude, on initialise une variable à 0 et on lui ajoute tous les éléments du tableau dans la boucle. Et comme l'a dit RouIoude, il faut faire un return de cette valeur.
Le Tout est souvent plus grand que la somme de ses parties.
Attends, ce n'est pas fini ... Si j'appelle deux fois la fonction, je devrais obtenir le même résultat, non? Ce ne sera pas le cas, car tu as détruit tous les éléments de ton tableau sauf le dernier. Essaies de faire comme j'ai dit. Tu auras d'autres exercices du genre à faire et il est important que ton tableau soit intègre.
Le Tout est souvent plus grand que la somme de ses parties.
Attends, ce n'est pas fini ... Si j'appelle deux fois la fonction, je devrais obtenir le même résultat, non? Ce ne sera pas le cas, car tu as détruit tous les éléments de ton tableau sauf le dernier. Essaies de faire comme j'ai dit. Tu auras d'autres exercices du genre à faire et il est important que ton tableau soit intègre.
merci pierre vs avez raison ,j ai essaye ta methode ms elle ne marche pas voici mon nouveau code
#include <stdio.h>
#include <stdlib.h>
int sommeTableau(int tableau[],int tailleDetableau);
int main()
{
int tableau[3]={3,8,2};
printf("%d",sommeTableau(tableau,3));
return 0;
}
int sommeTableau(int tableau[],int tailleDetableau)
{
for(int i=tailleDetableau-1;i>=0;i--)
{
int somme=0;
somme+=tableau[i];
return("%d",somme);
}
}
elle retourne la derniere valeur du tableau
- Edité par NouhaylaZakaria 26 août 2021 à 18:34:08
Je n'ai pas fait attention au début. Ça peut être facile pour un débutant de se mêler avec les { } Et pourquoi commencer la boucle par la fin? Ça marche, mais bon ... for(int i=0; i < tailleDuTableau; i++) {
Le Tout est souvent plus grand que la somme de ses parties.
stp pour le deuxieme exo j ai essaye un prg pour calculer la moyenne et quand j execute le prg me donne une valeur entiere meme si j ai defini moyenne comme double
- Edité par NouhaylaZakaria 26 août 2021 à 20:48:19
Probablement qu'au moment ou tu fais la division tu as affaire encore à deux entiers. Pour avoir un résultat en double, il faut qu'au moins une des deux opérande soit un double.
PS : Tu as modifié ton dernier code, mais tu n'affiche toujours pas le résultat !
Dans ton dernier code, je ne vois pas de printf(). Comment affiches-tu tes résultats? Ça m'intrigue ... Il est préférable que ta fonction somme renvoie un entier (int) comme auparavant. Le problème avec la moyenne est qu'on veut un résultat en double. Alors, comment fait-on pour avoir un double avec deux int? Il y a quelque chose qu'on appelle "casting" qui veut dire qu'on peut convertir d'un type dans un autre. On le fait en précédant la variable (ou l'expression) à convertir avec le type de ce qu'on veut (si c'est possible). Ici je peux faire (double) tailledetableau pour convertir mon int en double. Ta fonction moyenne pourrait avoir l'air de ceci: return sommeTableau(tableau, tailledetableau) / (double) tailledetableau; Il suffit qu'un seul élément de l'expression soit en double pour forcer le compilateur à tout convertir en double.
Le Tout est souvent plus grand que la somme de ses parties.
@RhoufirAnouar: Tu arrives dans le sujet d'un autre. Tu devrais créer ton propre sujet. Pour répondre à ta question, utiliser "void" comme type pour une fonction veut dire qu'on ne veut rien retourner. Le compilateur va te donner une erreur si tu essaies de récupérer la valeur de retour.
Le Tout est souvent plus grand que la somme de ses parties.
C'est beaucoup mieux, mais tu devrais afficher le résultat dans la fonction main au lieu de le faire retourner par la fonction main.
( il faut savoir que quand tu as deux return dans une fonction, seule le premier sera exécuté. )
NouhaylaZakaria a écrit:
oui d accord merci rouloude
Il ne faut pas que dire : oui d'accord, il faut le faire ! Parce que je ne sais pas comment tu fait pour voir le résultat (main retourne un entier et ça tu ne peux pas y changer).
EDIT : J'ai vu que tu avais corrigé, ça va mieux comme cela ?!
merci pierre pour ton aide enfin le code a fonctionne voici le nouveau code
#include <stdio.h>
#include <stdlib.h>
int sommeTableau(int tableau[],int tailleDetableau);
double moyenne(int tableau[],int tailleDetableau);
int main()
{
int tableau[3]={3,8,0};
printf("%f", moyenne(tableau,3));
return 0;
}
int sommeTableau(int tableau[],int tailleDetableau)
{
int somme=0;
for(int i=0;i<tailleDetableau;i++)
{
somme+=tableau[i];
}
return (somme);
}
double moyenne(int tableau[],int tailleDetableau)
{
double moyenne;
moyenne=sommeTableau(tableau,tailleDetableau)/(double)tailleDetableau;
return moyenne;
}
- Edité par NouhaylaZakaria 27 août 2021 à 14:53:23
tableau c exo 1
× 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.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.