Anzeige

Taschenrechner C#


abdul

Grünschnabel
#1
Hallo Leute , ich habe ein Taschenrechner programmiere , allerdings sind noch paar fehler noch drin ,
es rechnet alles falsch .wichtig ist wenn ich kettenopertion durchfuhren bekomme ich ne falsch Ergebnis.
kann mir jemand helfen
 

Anhänge

#3
Hier der Code für die, die Ihn im Forum brauchen:

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Rechner
{
    internal struct teioper
    {
       
       
        public double value;
        public operat operator1;


    }

   internal enum operat
    {
        addi = 1,
        sub = 2,
        multi = 3,
        div = 4

    }
    public partial class Form1 : Form
    {
        List<teioper> operrazahl = new List<teioper>();

        Timer _time = new Timer();
        //   double value = 0;
        string anzeigezahl;
        string zahl;
       operat operatort = operat.addi;


        public Form1()
        {
            InitializeComponent();
            //InitializeTimer(); //Timer initialisieren
            //this._time.Start();
            //txtdate.Text = string.Format("{0:00}:{1:00}:{2:00}", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
        }

        private void button_click(object sender, EventArgs e)
        {


             Button b = (Button)sender;
             zahl +=  b.Text;
          //  result.Text = result.Text + b.Text;
          // das macht mann wenn man Mehrere texte verketet 
            result.Text = string.Concat(result.Text, b.Text);
           
         //   t.value = double.Parse(zahl);
           

        }

        private void opertor_click(object sender, EventArgs e)
        {
            Button b = (Button)sender;
            teioper t;
             t.operator1 =  operatort ;
           
         
           //  t.operator1 = operat(b.Text);

              t.value = double.Parse(zahl);
              operrazahl.Add(t);
     

            switch (((Button)sender).Text)
            {
                case "+":
                    operatort = operat.addi;
                    break;
                case "-":
                    operatort = operat.sub;
                    break;
                case "*":
                    operatort = operat.multi;
                    break;
                case "/":
                    operatort = operat.div;
                    break;
                default:
                    break;
            }
            result.Text = string.Concat(result.Text, ((Button)sender).Text);
            zahl = "";
         
        }

       
        private void button16_Click(object sender, EventArgs e)
        {

            List<teioper> ergebnis = new List<teioper>();
            foreach (teioper teil in operrazahl)
            {
              if (teil.operator1 == operat.addi|| teil.operator1 == operat.sub)
                {
                    ergebnis.Add(teil);
                }
              else
                {
                    double neuezahl;
                    neuezahl = teil.operator1 == operat.multi 
                        ? ((teioper)(ergebnis.Last())).value * teil.value
                       
                        : ((teioper)(ergebnis.Last())).value / teil.value;

                    //if ("A" == "B")
                    //    bool erg = true;
                    //else
                    //    bool erg = false;


                    //bool erg = "A" == "B" ? true : false;

                    // Losche das letzt element von die neue liste

               
                    ergebnis.Remove(ergebnis.Last());
               

                    teioper t;
                    t.operator1 = neuezahl > 0 ? operat.sub : operat.addi ;
                    t.value = neuezahl;
                    ergebnis.Add(t);
                }
            }
            double result = 0;
            foreach (teioper er in ergebnis)
            {
                //if (er.operator1 == operat.addi)
                //{
                //    result = er.value + er.value;
                //}
                //else if (er.operator1 == operat.sub)
                //{
                //    result = er.value - er.value;
                //}
             //   Fehler an diese zeile ??????
               result = er.operator1 == operat.addi ? result + er.value : result - er.value;
            }

            this.result.Text = result.ToString();

            //opreration_pressed = false;
            //switch (opertion)
            //{
            //    case " + ":
            //        result.Text = result.Text + result.Text;
            //        result.Text = (value + double.Parse(result.Text)).ToString();

            //        break;
            //    case " - ":
            //        result.Text = (value - double.Parse(result.Text)).ToString();

            //        break;
            //    case " * ":
            //        result.Text = (value * double.Parse(result.Text)).ToString();

            //        break;
            //    case " / ":
            //        result.Text = (value / double.Parse(result.Text)).ToString();

            //        break;
            //    default:
            //        break;
            }

        private void button17_Click(object sender, EventArgs e)
        {
            result.Text = "";
        }
   

   
        //public void InitializeTimer()
        //{
        //    this._time.Interval = 1000;
        //    this._time.Tick += new EventHandler(TimerTick);
        //}
        //void TimerTick(object sender, EventArgs e)
        //{
        //    this.txtdate.Text = string.Format("{0:00}:{1:00}:{2:00}",
        //                                          DateTime.Now.Hour,
        //                      DateTime.Now.Minute,
        //                      DateTime.Now.Second);
        //}

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
 
Anzeige
Anzeige