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 :

Utiliser return avec condition if , else sur 2 fonctions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut Utiliser return avec condition if , else sur 2 fonctions
    salut à tous et à toutes ;



    j'ai essayer avant d'hier d'écrire un programme qui me renvois l'une des deux fonctions SI l'une des 2 fonctions à été apellée par l'apellant .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int foo1 ( int *donnee1, int *donnee2)
     
    {
    /* Code  */ 
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int foo2 ( int *val1 , int *val2 , int *val3)
     
    {
    /* Code  */ 
     
    }

    Le but du code est d'apeller l'une de ces deux fonctions avec condition .

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
     
    int ma_fonction ( int param, int a,int b)
    {
     
    int resultat = 0;
     
     
    switch ( param)
     
    {
     
    case  1 :
     
    if (resultat == 1)   // si result == 1 On appelle la variable foo1
     
     return foo1 ( donnee1 , donnee2);
     
    /* 
    si la premiere condition est FAUSSE 
    on appelle FOO2 */
     
    else return foo2 ( val1 , val2 , val3);
     
     
    break;
    default:break;
     
    }
    Le probléme dans ce code c'est SAUF la premiére variable (foo1) qui est renvoyée pas la deuxiéme .
    Pour renvoyée la deuxiéme variable foo2 , je dois la mettre en premier .


    En langage C éxiste t'il une solution pour analyser 2 conditions et renvoyer celle qui est apeller par l'apellant .



    Merci pour vos différents conseils .

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ça devrait marcher..

    C'est que tu as une erreur autre part...

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ça devrait marcher..

    C'est que tu as une erreur autre part...
    salut souviron34 ;


    Tout à fait , mais return me renvoie la premiére variable (FOO1) et IGNORE la 2 éme qui est FOO2 .
    Lorsque je mets la 2 éme variable (FOO2) en premier c'est celle ci qui est renvoyée et le reste est ignorer .

    Comment changer le code et apeller variable 1 || variable 2 SI elles sont appeller par l'appellant dans une instruction SWITCH .

    Les variables apellées sont foo1 & foo2 , mais SAUF l'une des 2 variables et renvoyée , c'est la variable qui se trouve en premier .

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    tu devrais mettre ta fonction réelle, parce que tel que c'est écrit là ça marche, mais je suppose que tu n'as pas posté le code complet..

    Et de plus il faiudrait l'appel de cette fonction..

    PS: je ne comprend pas ce que tu entends (ou en tous cas tu ne t'exprimes pas clairement) quand tu dis : "SAUF" ..

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    RE :

    je souhaite appeller 2 fonctions foo1 & foo2 mais retourner qu'une seule VALEUR.

    Appel de 2 fonctions mais RETOURNER une SEULE des 2 fonctions avec condition
    Resultat .

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    int main ( int parametre, int a, int b )
    {
    int Result = 0; 
    double res1, res2;
     
    switch (parametre)
    {
    case DEBUG:
    res1 = fonction1(a,b);         // On appelle la fonction1
    res2 = fonction2(val1,val2,val3);  // On appelle la fonction2
     
    if (Result)     // j'ai changer a if (Result == 1 )   c'est OK  
     
    //return res1;     // le résultat est  n'est pas renvoyer
     
    return fonction1(a,b);   // le résultat est  renvoyer
     
    else return res2; // le résultat n'est pas renvoyer
     
    break;
     
    default: break;
     
     
    }
     
     
     
     
    }

  6. #6
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Pour la lisibilité, on évite d'avoir plusieurs "return" dans une meme fonction.
    Il faut procéder de la manière suivante quand c'est possible :
    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
    int ma_fonction (int param, int a, int b)
    {
        int res;
     
        [..]
     
        if (condition == VRAIE)
        {
            res = foo1();
        }
        else
        { 
            res = foo2();
        }
     
        return res;
    }

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ça devrait marcher..

    C'est que tu as une erreur autre part...
    salut et merci à vous tous pour vos différents conseils conçernant ce sujet .

    Le code à été amélioré mais le probléme c'est qu'il retourne la premiére variable pas la deuxiéme .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int fonction1 ( int *a, int *b)
     
    {
    /* Code  */ 
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int fonction2 ( int *val1 , int *val2 , int *val3)
     
    {
    /* Code  */ 
     
    }

    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
     
    int main ( int *parm, int *a, int *b )
    {
    int Resultat = 0; 
    double res1, res2;
     
    switch (param)
    {
    case DEBUG:
    res1 = fonction1(a,b);   // appelle fonc1
    res2 = fonction2(val1,val2,val3);  // appelle fonc2
     
        if (Resultat == true )   
     
    return res1;     
    else return res2;
     
    break;
     
    }
    Le Probléme :

    Comment créer une condition qui renvois la fonction1 si ==VRAIE et renvois la fonction2 si == VRAIE .

    Si conditiion == VRAIE alors appeller fonction1 et RETOURNER sa valeur qui est
    fonction1(a,b).
    Sinon appeller fonction2 et RETOURNER sa valeur fonction2(val1,val2,val3).

Discussions similaires

  1. [AC-2010] Requete SOMME avec condition 'non vide' sur un autre champ
    Par LAURENTN45 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 11/12/2012, 20h46
  2. [Batch] Problème syntaxe avec condition if ( ) else () pour NT
    Par carreau dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 14/10/2011, 18h45
  3. Requête avec condition en AND sur deux tables
    Par sologne dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/05/2011, 11h09
  4. Conditions If Else sur CSS
    Par chok371 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/07/2010, 15h56
  5. Utiliser MySqlAdmin avec des droits utilisateurs sur XP
    Par thorgal85 dans le forum Outils
    Réponses: 2
    Dernier message: 18/03/2005, 12h19

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