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 :

Calcul via Opérateurs logiques [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Par défaut Calcul via Opérateurs logiques
    Bonjour à tous,

    J'essaye de faire des calculs avec des opérateurs logiques (AND, OR, XOR...etc), pour cela j'ai une textBox qui me permet de saisir le calcul mais en utilisant:

    • "+" = OR

    • "*" = AND

    • "!" = NOT


    Or, en C# on sait que :
    • OR = "|"

    • AND = "&"

    • NOT = "!"


    J'ai donc quelques lignes de code qui remplacent les "+" et "*" en "|" et "&" :
    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
            private char a1 = '|';
            private char b1 = '&';
            private char c1 = '!';
            private static char[] badCharacter1 = { '+' };
            private static char[] badCharacter2 = { '*' };
            private static char[] badCharacter3 = { '!' };
     
            string txtin = txtExpression.Text; //zone de saisie du texte en forme originale
     
            string txtout = txtin;  //Utilisé pour le remplacement des caractères
     
                    for (int j = 0; j < badCharacter1.Length; j++)
                    {
                        txtout = txtout.Replace(badCharacter1[j], a1);
                    }
     
                    for (int j = 0; j < badCharacter1.Length; j++)
                    {
                        txtout = txtout.Replace(badCharacter2[j], b1);
                    }
     
                    for (int j = 0; j < badCharacter1.Length; j++)
                    {
                        txtout = txtout.Replace(badCharacter3[j], c1);
                    }
    Donc par exemple:
    Si txtin = a+b+c*(d*e)
    Alors txtout = a|b|c&(d&e)
    Avec a,b,c,d et e = 0 ou 1
    Mon problème:
    J'aimerai obtenir le résultat : "0" ou "1" suivant ce qui est écrit dans txtout en considérant que les valeurs des variables sont rentrées préalablement. (En clair, j'aimerai que txtout soit transformée en une équation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int Result = Convert.ToInt32(txtout); // ne marche pas
    Comment faire pour transformer "txtout" en une équation et en afficher le résultat en int ?

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Par défaut
    Salut,

    Je ne veux pas dire de bêtises mais il me semble qu'en c# le OR = || et le AND=&&.

    @++

    SD

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Par défaut
    http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx

    Voir section "opérateurs mathématiques et logiques"

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 20
    Par défaut
    oui j'ai répondu un peu vite je viens de voir a désolé j'ai eu un doute

  5. #5
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string StrongConvert(string IN)
            {
                string[] oldOper = new string[] { "+", "*", "!" };
                string[] newOper = new string[] { "|", "&", "!" };
     
                for (int i = 0; i < oldOper.Length; i++)
                {
                    IN = IN.Replace(oldOper[i], newOper[i]);
                }
                return IN;
            }

  6. #6
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    faire une simple a+b ou a*b ou !a
    c'est simple a faire a mon avis
    a l'aide d'une switch tu peux excute l'operation.

    mais le probleme réside dans les () c'est pas simple il faut utiliser un fonction récursive pour avoir le résultat
    exemple

    a+(b*c)

    au moment au je veux faire une addition je trouve un ( ce qui veux dire que je doit fait avant une autre opération dans je doit faire appel à une fonction pour la faire avant de faire a+res

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    a+(b*c)=>
     
    fonction (a,op,(b*c))
    {
    switch (op)
    ......
    case +: 
      a+fonction(b,*,c)
     
    }

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Par défaut
    Ok merci azstar j'ai compris ta démarche, je vais essayer de faire comme ça (opération par opération) et jreviendrai vous tenir au courant de mon évolution.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2013
    Messages : 15
    Par défaut
    C'est bon j'ai réussi à faire ce que je voulais, mais du coup j'utilise une autre méthode via cet exemple : http://www.blackbeltcoder.com/Articl...sion-evaluator

    Il m'a juste suffit de virer tout ce qui me servait a rien dans son programme (abs/PI/round/sqrt...etc...) et de remplacer les "double" par des "bool", les "+" par des "|" et enfin les "*" par "&".

    Merci pour votre aide, si vous avez encore des questions sur ce sujet n'hésitez pas.

    Bonne continuation

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2006, 15h47
  2. [EL] El et opérateur logique
    Par LeXo dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/07/2006, 21h28
  3. Opérateurs logiques en C
    Par bandit boy dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/07/2006, 13h16
  4. Opérateurs logiques: solution plus simple?
    Par p0Kep0K dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/04/2006, 15h48
  5. [VBA] Condition - opérateurs logiques
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 07/10/2005, 10h22

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