Problème Visual Studio

vincentdu27300 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bien le bonjours je dois créer un programme qui est le suivant : Calulatrice Polonaise Inversé ( c'est a dire au lieux de 1 + 1 = 2 c'est 1 1 + = 2 ) étant novice dans la matière je me suis a faire dans un premier temps une calculatrice normal tous marcher bien a un détaille la fonction Puissance qui ne fonctionne pas comme prevus ...
A voir également:

5 réponses

Utilisateur anonyme
 
Bonjour,

merci de poster le code en utilisant la coloration syntaxique, explications la coloration syntaxique ici.


Merci aussi de préciser dans quel langage tu codes....
0
Utilisateur anonyme
 
Tu n'as pas bien lu les explications...
J'ai du corriger ta coloration.
0
Utilisateur anonyme
 
Tu aurais pu te contenter de poster la fonction puissance :)
0
vincentdu27300 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'en suis désolé j'utilise le C# et voicie le code en question :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string operateur;

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text += "1";

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text += "2";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text += "3";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Text += "4";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            textBox1.Text += "5";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            textBox1.Text += "6";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            textBox1.Text += "7";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            textBox1.Text += "8";
        }

        private void button16_Click(object sender, EventArgs e)
        {
            textBox1.Text += "9";
        }

        private void button13_Click(object sender, EventArgs e)
        {
            textBox1.Text += "0";
        }

        private void button_plus_Click(object sender, EventArgs e)
        {
            textBox1.Text += "+";
            operateur = "+";

        }

        private void button_moins_Click(object sender, EventArgs e)
        {
            textBox1.Text += "-";
            operateur = "-";
        }

        private void button_multiplication_Click(object sender, EventArgs e)
        {
            textBox1.Text += "*";
            operateur = "*";
        }

        private void button_divise_Click(object sender, EventArgs e)
        {
            textBox1.Text += "/";
            operateur = "/";
        }

        private void button_modulo_Click(object sender, EventArgs e)
        {
            textBox1.Text += "%";
            operateur = "%";
        }

        private void button_puissance_Click(object sender, EventArgs e)
        {
            textBox1.Text += "^";
        }

        private void button_egale_Click(object sender, EventArgs e)
        {
            if (operateur == "+")
            {
                string[] chaine = textBox1.Text.Split('+');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) + double.Parse(chaine[1])).ToString();
            }
            if (operateur == "-")
            {
                string[] chaine = textBox1.Text.Split('-');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) - double.Parse(chaine[1])).ToString();
            }
            if (operateur == "*")
            {
                string[] chaine = textBox1.Text.Split('*');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) * double.Parse(chaine[1])).ToString();
            }
            if (operateur == "/")
            {
                string[] chaine = textBox1.Text.Split('/');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) / double.Parse(chaine[1])).ToString();
            }
            if (operateur == "%")
            {
                string[] chaine = textBox1.Text.Split('%');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) % double.Parse(chaine[1])).ToString();
            }
            if (operateur == "^")
            {
                string[] chaine = textBox1.Text.Split('^');

                textBox1.Text += Environment.NewLine + "=" + Environment.NewLine + (double.Parse(chaine[0]) ^ (double.Parse(chaine[1])).ToString());
            }
        }

        private void button_effacer_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }

    }
}
0
Utilisateur anonyme
 
^ n'est pas l'opérateur de puissance dans C#, pas plus que % n'est l'opérateur de pourcentage....

Pour les puissances, voir la classe Math.

Modérer m'amène à intervenir dans de nombreux posts, mais les seuls langages que je connaisses sont le C# et un peu de VB. Pour vos codes pensez à la coloration.
Réponse trouvée ->Question Résolue
0
vincentdu27300 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
J'ais simplifié un peu ma démarche mais les opérateurs ne veulent pas s'afficher
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        double value = 0;
        String opertation = "";
        bool operation_pressed = false; 

        public Form1()
        {
            InitializeComponent();
        }

        //les nombre //

        private void button1_Click(object sender, EventArgs e)
        {
            if ((textBox1.Text == "0") || (operation_pressed))
                textBox1.Clear();

            Button b = (Button)sender;
            textBox1.Text = textBox1.Text + b.Text;

        }

        //les opération//


        private void Operateur_arithemetique(object sender, EventArgs e)
        {

            Button b = (Button)sender;
            opertation = b.Text;
            value = Double.Parse(textBox1.Text);
            operation_pressed = true;
        }

        //les calcules //

        private void button_egale_Click(object sender, EventArgs e)
        {
           switch(operation)
           {
               case "+":
                   textBox1.Text = (value + Double.Parse(textBox1.Text)).ToString();
                   break;

               case "-":
                   textBox1.Text = (value - Double.Parse(textBox1.Text)).ToString();
                   break;

               case "/":
                   textBox1.Text = (value / Double.Parse(textBox1.Text)).ToString();
                   break;

               case "*":
                   textBox1.Text = (value  * Double.Parse(textBox1.Text)).ToString();
                   break;

               case "%":
                   textBox1.Text = (value % Double.Parse(textBox1.Text)).ToString();
                   break;
               default:
                 break;
           }
           operation_pressed = false; 
        }

        private void button_effacer_Click(object sender, EventArgs e)
        {
            textBox1.Text = "0";
            value = 0;
        }

        
    }
}

0
Utilisateur anonyme
 
J'ai encore corrigé ta coloration, merci de bien l'utiliser la prochaine fois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
C'est beaucoup mieux!

Ici
            if ((textBox1.Text == "0") || (operation_pressed))
 


Les parenthèses autour de operation_pressed sont inutiles, il n'y a pas de test c'est deja un bool. Celles autour de textBox1.Text == "0", n'ont pas d'intérêt pour le code en soit, par contre ça peut paraître plus lisible.

T'as viré la puissance? Je t'ai dit de regarder la classe Math, l'as tu fait?

Évite value comme nom de variable, c'est un mot clé pour les propriétés.


Par contre, je ne comprends pas ce que tu entends par

les opérateurs ne veulent pas s'afficher


Quoiqu'il en soit, tu te sert de textBox comme de la variable pour stocker tout ton calcul. Il te faut donc ensuite traduire ce qui est écrit pour faire l'opération.

Ça n'est pas judicieux.
A mon sens, quand tu tapes un nombre, tu devrais remplir une variable numérique, quand tu tapes un opérateur, tu devrais remplir une variable dédiée, un enum par exemple.
Quand tu tapes sur égal, tu as déjà 2 nombres et un opérateur, c'est plus simple à gérer, ce sera plus simple à transformer en notation polonaise.

L'idéal est d'écrire une classe métier qui fait les calculs, les contrôles de ta form servant alors à alimenter cette classe.
0