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 :

if avec Operateur &&


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Par défaut if avec Operateur &&
    Bonjour,

    J'ai une condition du genre :

    if ((val > 1) && (val2 > 2) && (val3 > 1))
    {
    traitement x
    }
    else
    {
    traitement y
    }

    et j'aimerais savoir laquel (ou lesquels) de mes conditions sont fausses ? Peut-être que un if n'est pas la meilleure solution? Sinon comment ?

    Merci !

  2. #2
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    amha, pas possible ...

    peut-être en imbriquant les if ? Tout dépend du traitement que tu veux faire pour chaque cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (val > 1)
    {
      if (val2 > 2)
      {
        if (val3 > 1)
        {
     
        }
      }
    }

  3. #3
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Citation Envoyé par Samoht2001 Voir le message
    Bonjour,

    J'ai une condition du genre :

    if ((val > 1) && (val2 > 2) && (val3 > 1))
    {
    traitement x
    }
    else
    {
    traitement y
    }

    et j'aimerais savoir laquel (ou lesquels) de mes conditions sont fausses ? Peut-être que un if n'est pas la meilleure solution? Sinon comment ?

    Merci !
    Tu es obligé de traiter tous les cas... Tu veux toutes les combinaisons???

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par Samoht2001 Voir le message
    et j'aimerais savoir laquel (ou lesquels) de mes conditions sont fausses ? Peut-être que un if n'est pas la meilleure solution? Sinon comment ?
    euh...

    ca depends du besoin, mais la solution de simplicite (faire trois tests apres coup) peut marcher comme il faut aussi

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 96
    Par défaut
    Moi je fais un truc un peux crade dans le code mais sa marche très bien.
    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
     
    bool cond1,cond2,cond3...;
    if(val1 > 1)
    {
         //code
    }else{ cond1 == true; }
    if(val2 > 2)
    {
         //code
    }else{ cond2 == true; }
    if(val3 > 3)
    {
         //code
    }else{ cond3 == true; }
     
    if(cond1 == false && cond2 == false && cond3 == false)
    {
         //code
    }
    C'est un peut crade comme code mais ça marche très bien et situ fait une validation de plusieurs champs texte par exemple alors tu peur metre dans le else un valeur a afficher en rouge.

    A bientôt.

  6. #6
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Citation Envoyé par lenny32 Voir le message
    Moi je fais un truc un peux crade dans le code mais sa marche très bien.
    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
     
    bool cond1,cond2,cond3...;
    if(val1 > 1)
    {
         //code
    }else{ cond1 == true; }
    if(val2 > 2)
    {
         //code
    }else{ cond2 == true; }
    if(val3 > 3)
    {
         //code
    }else{ cond3 == true; }
     
    if(cond1 == false && cond2 == false && cond3 == false)
    {
         //code
    }
    C'est un peut crade comme code mais ça marche très bien et situ fait une validation de plusieurs champs texte par exemple alors tu peur metre dans le else un valeur a afficher en rouge.

    A bientôt.

    Je ne vois pas du tout ce que tu essaye de faire, perso je ne suis pas persuadé que c'est ce qu'il voulait:


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    bool condition1,condition2,condition3;
    condition1 = val1 > 1;
    condition2 = val1 > 2;
    condition3 = val1 > 1;
    if (condition1)
    {
       if (condition2)
       {
          if (condition3)
          {
    	  //toutes sont vraies
          }
          else
          {
    	  //seule condition 3 fausse
          }
       }
       else
       {
          if (condition3)
          {
    	  //seule condition2 est fausse
          }
          else
          {
    	  //seule condition1 est vraie
          }
       }
    }
    else
    {
       if (condition2)
       {
          if (condition3)
          {
    	  //seule condition 1 est fausse
          }
          else
          {
    	  //seule condition 2 est vraie
          }
       }
       else
       {
          if (condition3)
          {
    	  //seule condition 3 est vraie
          }
          else
          {
    	  //toutes sont fausses
          }
       }
    }

  7. #7
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    Comme on va vu sur mon précédent post, c'est assez long à gérer. Mais j'ai une idée encore mieux :
    Tu sais que True converti en entier vaut 1 et que False vaut 0, donc tu construit un nombre binaire avec toutes tes conditions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //byte par example
    List<bool> tableau = new List<bool>();
    tableau.Add(val1 > 1);
    tableau.Add(val2 > 2);
    tableau.Add(val3 > 1);
    Byte nombre = RetourneEntierAPartirDuTableau(tableau);
    il ne te manquera plus qu'à implémenter RetourneEntierAPartirDuTableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private Byte RetourneEntierAPartirDuTableau(List<bool> pListe)
    {
       //le code...
    }
    dès que tu récupères le nombre, tu n'auras qu'à faire un case...

    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
     
    switch(nombre)
    {
       case 0 :
            // rien n'est vrai car 00000000
            //ton code pour ce cas
        break;
     
    case 1 :
            //seulement la première condition est vraie 00000001
            //ton code pour ce cas
        break;
     
    case 2 :
            //seulement la deuxième condition est vraie 00000010
            //ton code pour ce cas
        break;
     
    case 3 :
            //les 2 premières conditions sont vraies 00000011
            //ton code pour ce cas
        break;
     
    //...................etc...............
     
    default:
            //si tu n'as pas une valeur que tu attendais
            //ton code pour ce cas
     
        break;
    }

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Sinon, un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    [Flags] 
    private enum Values{
    val1, val2, val3
    }
     
     
    Values val = 0;
    if  (val1 > 1)  val = val  | val1;
    if  (val2 > 1)  val = val  | val3;
    if  (val3 > 1)  val = val  | val3;
    et apres, tu testes le statut de ton enumeration...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if ((val & Values.val1)==Values.val1)
        ···Console.WriteLine("Ok");
    Et si tu veux, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    switch((int)val){
     
      case 0: //tout est faux
        break;
      case 1: // val 1 est vraie, le reste faux
        break;
      case 2: // val 2 est vraie, le reste faux
        break;
      case 3: // val 1 et 2 sont vraies, val3 est fausse
        break;
    }
    Ca peut correspondre a ce que tu veux faire

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex avec operateur non gourmand et repetition d'un motif
    Par singman dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/09/2009, 10h22
  2. problemes avec operateurs + - / et *
    Par theblow_wind dans le forum Langage
    Réponses: 7
    Dernier message: 11/06/2007, 08h50
  3. Allocation Dynamique de Memoire Avec Operateur New
    Par msstaf dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/06/2006, 15h49

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