J'ai des difficultés à comprendre comment fonctionne la somme des valeurs d'un tableau:
#include <stdio.h>
#include <stdlib.h>
int sommetableau (int tableau[], int tailletableau);
int main(int argc, char *argv[])
{
int tableau [4]= {5,8,9,5};
sommetableau(tableau, 4);
return 0;
}
int sommetableau (int tableau[], int tailletableau)
{
int i = 0;
int resultat = 0;
for (i=0; i<tailletableau; i++)
{
printf("les vleurs du tableau sont %d\n", *tableau);
printf("les vleurs du tableau sont %d\n", tableau[i]);
resultat = resultat + *tableau++;
printf("valeur de resultat est %d\n", resultat);
}
printf("la somme des valeurs du tableau est %d", resultat);
return resultat;
}
Plus particulièrement avec ces deux lignes:
printf("les vleurs du tableau sont %d\n", *tableau);
printf("les vleurs du tableau sont %d\n", tableau[i]);
Mes connaissances se limitent à ce cours en réalité, alors j'en profite pour poser 3 questions sur ce que je n'ai pas réussi à saisir pour le moment.
1.
Je crois saisir les pointeurs, par contre j'ai plus de mal avec les fonctions. Je ne comprends pas la nature de la variable tailletableau (ou des équivalents qq soit la fonction). Ce que je crois comprendre : c'est qu'elle sert de "chemin" aux futures variables qui vont utiliser la fonction. Une sorte d'exemple. Mais je ne comprends pourquoi elle n'est pas déclarée ou définie... L'est-elle ?
2.
Je n'arrivais pas à indiquer une formule pour la somme, alors j'en ai pris une sur le forum :
resultat = resultat + tableau[i];
Sans trop savoir comment l'expliquer. Mais ça n'a pas marché...
Du coup j'ai modifié avec ce qui me paraissait logique, mais si quelqu'un peut m'expliquer clairement, ça m'aiderait beaucoup.
3.
Pour finir, je n'ai pas complètement compris non plus la différence entre une fonction void et int. Alors j'ai compris qu'une fonction void ne renvoyait rien, et se contentait d'afficher, mais !
Notre fonction nommée XXXX va prendre deux paramètres : la largeur et la hauteur. Elle renverra l'aire. (fonction double dans le cours)
Dans ce cas, la fonction ne renverrait plus rien, elle se contenterait de calculer l'aire et de l'afficher immédiatement. (fonction void dans le cours)
Si quelqu'un peut éclairer mes lanternes, merci encore !
Ce que je te propose, avant de faire la somme du tableau, c'est de faire une fonction qui affiche les éléments du tableau !
Ton code est trop tordu, tu ne peux pas utiliser les crochets et le déréférencement ensemble surtout que tu incrémentes le pointeur ! (Ça compile, le code est syntaxiquement correcte, mais alors c'est loin de faciliter la compréhension).
Salut rouloude, merci pour ta réponse. J'ai bien sûr relu le cours plusieurs fois. Tu remarqueras d'ailleurs que la fonction affiche les valeurs du tableau : 5, 8, 9 et 5.
J'ai écrit plusieurs printf pcq je voulais voir et comprendre la différence entre:
printf("les vleurs du tableau sont %d\n", *tableau);
printf("les vleurs du tableau sont %d\n", tableau[i]);
Ensuite je veux bien te croire sur parole quand tu me dis que le code est tordu, mais est-ce possible de détailler un peu ? des choses qui peuvent te paraître évidentes ne le sont pas pour moi , je débute. 80% de ce code est basé sur ce qu'on trouve dans le cours. Et comme je l'ai déjà noté, ma seule modification est:
resultat = resultat + *tableau++;
que j'ai modifié d'une ligne trouvée sur le forum. Et et je ne suis pas persuadé de comprendre pourquoi cela fonctionne.
Dans ce cas fait deux fonctions une avec les crochets et une en déréférencent le pointeur, mais ne mélange pas les deux dans la même fonction.
C'est le fait de mélanger les deux qui est tordu !
SiVl a écrit:
Tu remarqueras d'ailleurs que la fonction affiche les valeurs du tableau : 5, 8, 9 et 5.
Bien sur que j'y ai remarqué. Mais, c'est tout mélangé dans ta fonction, faut y mettre de l'ordre. Il faut savoir que la fonction somme ne devrait normalement rien afficher, elle doit juste retourner la somme !
Ah ok ! j'avais bien vu, mais j'ai voulu revenir une étape en arrière sur un simple affichage du tableau, sa fonction étant trop tordu, comme je lui avait dit. Comme je parlais d’affichage je pensais que tu parlais de mes fonctions c'est pour cela que je ne comprenais pas.
rouloude a écrit:
Il faut savoir que la fonction somme ne devrait normalement rien afficher, elle doit juste retourner la somme !
Je lui ai précisé ce que devait faire la fonction sommetableau. Après j'aurais pu lui donner la solution toute cuite.
Le Tout est souvent plus grand que la somme de ses parties.
difficultés avec somme des valeurs 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.
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.