Taschenrechner C#


abdul

Grünschnabel
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

Käsekuchen

Grünschnabel
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)
        {

        }
    }
}