IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Demande sur les fonctions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Demande sur les fonctions
    H4llo,

    Voila j'ai fait un code, qui permet de calculer la moyenne des valeurs d'un tableau :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <stdio.h>
    #include <stdlib.h>
     
    double moyenneTableau(int tableau[], int TailleTableau);
     
    int main()
    {
        int tableau[6] = {5, 5, 5, 5, 5, 5};
        int Moyenne = 0;
     
        Moyenne = moyenneTableau(tableau, 4);
     
        printf("%d\n", Moyenne);
        return 0;
    }
     
    double moyenneTableau(int tableau[], int TailleTableau)
    {
        return (5 + 5 + 5 + 5 + 5 + 5) / 6;
    }
    Mais voila, comme vous le voyez, j'ai fais ceci :
    return (5 + 5 + 5 + 5 + 5 + 5) / 6;, je n'ai pas renvoyé une variable, et je voulais savoir comment faire si je voulais retourner une valeur comme ceci :
    variable = (5 + 5 + 5 + 5 + 5 + 5) / 6;
    return variable;

    Mais vus que la variable "variable" n'est pas déclarée dans main(), sa ne fonctionnerai pas, alors comment faire ?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si je comprend ton problème,
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double moyenneTableau(int tableau[], int TailleTableau)
    {
        return (5 + 5 + 5 + 5 + 5 + 5) / 6;
    }
    est correct (en tant que code d'essai, bien sûr). Ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double moyenneTableau(int tableau[], int TailleTableau)
    {
      double variable =  (5 + 5 + 5 + 5 + 5 + 5) / 6  ;  
      return variable;
    }
    ne change rien : c'est la valeur de variable (5) qui est retournée.

    Les deux codes fonctionneront de façon identique et il n'y a rien à changer dans le main() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne = moyenneTableau(tableau, 4);
    Dans les deux cas, Moyenne recevra la valeur retournée par la fonction.

    Remarque : dans ton exemple, (5 + 5 + 5 + 5 + 5 + 5) / 6 est une opération entre entiers (et la division sera la division entière) , le résultat sera un entier (donc sans partie décimale) qui sera converti automatiquement en double avant d'être retouné par la fonction. Par exemple (5+4)/2 donnera 4 et non pas 4.5.
    Il faut forcer le calcul de la division en flottant. Dans cet exemple on peut faire (5+4)/2.0
    Dans la version définitive, tu auras ..../(double)TailleTableau; où .... représente la somme des éléments du tableau que la fonction aura préalablement calculé.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Re,

    Merci pour ta réponse, oui en effet sa ne change rien, mais j'avais pensé à un autre truc, je vais regarder et je revient.


  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Tu as vu un peu les adresses ?

    Si tu veux garder la variable que tu auras crée dans ta fonction il faut transmettre son adresse et non sa valeur et, bien sûr, récupérer l'adresse et non la valeur.

    Si c'est ce qui t'intéresse je peux t'en dire plus mais dans le doute je ne détaille pas plus.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    En gros, tu as 2 possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    double moyenne(int tableau[] tab)
    {
       const int n = sizeof(tab) / sizeof(*tab);
       double moy = blablabla;
       return moy;
    }
    ou sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    voidmoyenne(int tableau[] tab,double * moy)
    {
       const int n = sizeof(tab) / sizeof(*tab);
       *moy = blablabla;
    }

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par salseropom Voir le message
    En gros, tu as 2 possibilités :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double moyenne(int tableau[] tab)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double moyenne(int tab[])
    Citation Envoyé par salseropom Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       const int n = sizeof(tab) / sizeof(*tab);
    n ne donnera pas le nombre d'éléments du tableau : tab est un pointeur et sizeof tab donnera la taille d'un pointeur, pas du tableau.

Discussions similaires

  1. Où trouver l'aide sur les fonctions de l'API Windows ?
    Par psidonio dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 08/11/2005, 14h28
  2. [CR]Aide sur les fonction de date et plage de date.
    Par Job dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/11/2005, 09h19
  3. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  4. Besoin d'aide sur les fonction d'interbase
    Par BOUBOU81 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/11/2004, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo