1) À la manière dont tu l'écris, le printf() va afficher l'adresse de la fonction sommeTableau (je te laisse rechercher quelle est la bonne écriture)
2) Et de toute façon, sommeTableau() ne renverra pas la bonne valeur: il y a un ; en trop à la fin du for(): la valeur renvoyée sera donc celle de tableau[tailleTableau].... qui n'existe pas
- Edité par edgarjacobs 30 janvier 2019 à 22:12:38
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
je vois qu'il faut donc que je fasse un pointeur depuis ma fonction sommeTableau
C'est quoi un pointeur depuis ta fonction sommeTableau ? Connais-tu déjà les pointeurs en C ? Et quand bien même, les pointeurs n'ont pas leur place ici.
El.Jouffo a écrit:
mais je ne comprend pas exactement comment cela fonctionne
Tu peux le voir de la manière suivante: sommeTableau(tableau,4) (ligne 11) est remplacé par la valeur spécifiée dans le return qqchose; dans ton cas, qqchose est somme (ligne 25)
- Edité par edgarjacobs 30 janvier 2019 à 23:39:00
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
mais je ne comprend pas exactement comment cela fonctionne
Et bien sommeTableau(tableau,4) est une expression. Cette expression est évaluée (calculée), et le résultat est passé en second argument de printf. C'est comme si on écrit printf("%d", 1+2), le résultat de l'expression 1+2 est calculé, puis passé en second argument de printf. Bien sur, l'évaluation de sommeTableau(tableau,4) est un peu plus compliqué que celle de 1+2, puisqu'il faut éxécuter la fonction sommeTableau pour obtenir le résultat.
Il n'y a pas de différence conceptuelle avec ceci:
int a = 1 + 2;
int b = sommeTableau(tableau, 4);
dans les deux cas il faut évaluer une expression pour obtenir une valeur, puis affecter la valeur.
Alors déjà je ne suis pas très avancée du coups il y'a certains vocabulaires que je ne maitrise pas comme l'OP et les balises codes. Si vous pouviez être un peu plus explicite
Les balises code permettent de présenter le code de manière lisible, ça se fait avec le bouton </>, l'avant dernier de la liste au dessus de la zone pour écrire ses posts.
L'OP c'est celui qui a créé le sujet sur le forum, en général quand on a un problème on crée son propre sujet.
int sommeTableau( int tableau[] , int tailleTableau )
{
int somme = 0;
for( size_t i=0 ; i<tailleTableau ; i++ ) //Les indices d'un tableau sont des entiers positifs ! Une variable int est un entier signé. Ca n'a pas tellement de sens.
{
sum += tableau[i]; // qui est la factorisation de sum = sum + tableau[i]
}
return somme; // Il faut retourner somme à la fin de la boucle for sinon ta fonction s'arrête à la première itération.
}
int main()
{
int tableau[4]={10,15,3,12}; //Ce n'est pas un tableau de caracères, il n'y a pas de caractère de fin contrôle \0 pour les tableaux d'entiers.
int somme = sommeTableau(tableau,4); //Il faut récupérer le resultat de la fonction somme dans une variable pour connaitre le résultat.
return 0;
}
l erreur c est au printf comme tu afficher une variable qui n existe pas . soit tu nomme b=somme(tableau,4) et tu affiche b soit tu affiches directement somme(tableau,4) et non tableau
exercice tableau
× 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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Blond, bouclé, toujours le sourire aux lèvres...
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...