Announcement

Collapse
No announcement yet.

Ich komme nicht weiter ...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ich komme nicht weiter ...

    Hallo,
    ich versuche derzeit für testzwecke den Windows Taschenrechner so Orginalgetreu wie möglich nachzubauen.

    Aber momentan komme ich mit der rechnung einfach nicht weiter, ich habe zu viel herumgefrickelt und momentan habe selbst ich keinen durchblick mehr aber ich weiss auch nich wie ich es anders machen soll.

    Hier mal mein Quellcode:

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WINTR
    {
        public partial class WinTR : Form
        {
            double memory = 0, zahl_1 = 0, zahl_2 = 0, ergebnis = 0;
            string sOperator = "";
            bool bKomma = false, bErsteEingabe = true, bErgebnis = false, bUeberschreiben = false, bErsteRechnung = true;
            public WinTR()
            {
                InitializeComponent();
            }
    
            private void Eingabe(object sender, EventArgs e)
            {
                if (bUeberschreiben.Equals(true))
                {
                    tbx_anzeige.Text = "0,";
                    bErsteEingabe = true;
                    zahl_1 = 0; zahl_2 = 0;
                }
                Button clickedButton = (Button)sender;
                if (clickedButton.Text.Equals("0"))
                {
                    if (!tbx_anzeige.Text.Equals("0,"))
                        tbx_anzeige.Text = tbx_anzeige.Text.Insert(tbx_anzeige.Text.IndexOf(","), clickedButton.Text);
                    if (bKomma.Equals(true))
                        tbx_anzeige.AppendText(clickedButton.Text);
                }
                else
                {
                    if (bErsteEingabe.Equals(true))
                    {
                        tbx_anzeige.Text = tbx_anzeige.Text.Replace("0", clickedButton.Text);
                        bErsteEingabe = false;
                    }
                    else
                    {
                        if (bKomma.Equals(false))
                        {
                            tbx_anzeige.Text = tbx_anzeige.Text.Insert(tbx_anzeige.Text.IndexOf(","), clickedButton.Text);
                        }
                        else
                            tbx_anzeige.AppendText(clickedButton.Text);
                    }
                }
            }
                
            private void btnKomma_Click(object sender, EventArgs e)
            {
                bKomma = true;
            }
    
            private void Memory(object sender, EventArgs e)
            {
                Button clickedButton = (Button)sender;
                if (clickedButton.Text.Equals("MC"))
                {
                    lbl_memory.Text = "";
                    memory = 0;
                }
                if (clickedButton.Text.Equals("MR"))
                {
                    tbx_anzeige.Text = memory.ToString();
                }
                if (clickedButton.Text.Equals("MS"))
                {
                    lbl_memory.Text = "M";
                    memory = Convert.ToDouble(tbx_anzeige.Text);
                }
                if (clickedButton.Text.Equals("M+"))
                {
                    lbl_memory.Text = "M";
                    memory = memory + Convert.ToDouble(tbx_anzeige.Text);
                }
            }
    
            private void Clear(object sender, EventArgs e)
            {
                Button clickedButton = (Button)sender;
                if (clickedButton.Text.Equals("Rücktaste"))
                {
                    tbx_anzeige.Undo();
                }
                if (clickedButton.Text.Equals("CE"))
                {
                    tbx_anzeige.Clear();
                    tbx_anzeige.Text = "0,";
                    lbl_memory.Text = "";
                    bErsteEingabe = true;
                }
                if (clickedButton.Text.Equals("C"))
                {
                    tbx_anzeige.Text = "0,";
                    memory = 0;
                    zahl_1 = 0;
                    zahl_2 = 0;
                    bKomma = false;
                    bErsteEingabe = true;
                    bErgebnis = false;
                    lbl_memory.Text = ""; 
                    bErsteRechnung = true;
                }
            }
    
            private void opera(object sender, EventArgs e) 
            {
                if (bErsteRechnung.Equals(true))
                {
                        if (tbx_anzeige.Text.EndsWith(","))
                            tbx_anzeige.Text.Remove(0);
                        zahl_1 = Convert.ToDouble(tbx_anzeige.Text);
                            bErgebnis = true;
                            bErsteRechnung = false;
                            bErsteEingabe = true;
                            tbx_anzeige.Text = "0,";
                    }
                    else
                    {
                        if (tbx_anzeige.Text.EndsWith(","))
                            tbx_anzeige.Text.Remove(0);
                        zahl_2 = Convert.ToDouble(tbx_anzeige.Text);
                        bErgebnis = false;
                        bErsteRechnung = false;
                        berechnen(sender, e);
                    }   
            }
    
            private void operaBeiGleich(object sender, EventArgs e)
            {
                if (bErsteRechnung.Equals(true))
                {
                    if (tbx_anzeige.Text.EndsWith(","))
                        tbx_anzeige.Text.Remove(0);
                    zahl_1 = Convert.ToDouble(tbx_anzeige.Text);
                    bErgebnis = true;
                    bErsteRechnung = false;
                    bErsteEingabe = true;
                    tbx_anzeige.Text = "0,";
                }
                else
                {
                    if (tbx_anzeige.Text.EndsWith(","))
                        tbx_anzeige.Text.Remove(0);
                    zahl_2 = Convert.ToDouble(tbx_anzeige.Text);
                    bErgebnis = false;
                    bErsteRechnung = false;
                    berechnen(sender, e);
                }
            }
    
            private void btnPlus_Click(object sender, EventArgs e)
            {
                sOperator = "+";
                opera(sender, e);
            }
    
            private void btnMinus_Click(object sender, EventArgs e)
            {
                sOperator = "-";
                opera(sender, e);
            }
    
            private void btnMulti_Click(object sender, EventArgs e)
            {
                sOperator = "*";
                opera(sender, e);
            }
    
            private void btnTeiler_Click(object sender, EventArgs e)
            {
                sOperator = "/";
                opera(sender, e);
            }
    
            private void berechnen(object sender, EventArgs e)
            {
                switch (sOperator)
                {
                    case "+":
                        ergebnis += zahl_1 + zahl_2;
                        break;
                    case "-":
                        ergebnis += zahl_1 - zahl_2;
                        break;
                    case "*":
                        ergebnis += zahl_1 * zahl_2;
                        break;
                    case "/":
                        ergebnis += zahl_1 / zahl_2;
                        break;
                }
                tbx_anzeige.Text = ergebnis.ToString();
                tbx_anzeige.AppendText(",");
                bUeberschreiben = true;
            }
    
            private void btnBerechnen_Click(object sender, EventArgs e)
            {
                opera(sender, e);
                tbx_anzeige.Text = ergebnis.ToString();
                tbx_anzeige.AppendText(",");
                bUeberschreiben = true;
            }
        }
    }
    Vllt. habt ihr ja eine Idee was ich daran verbessern könnte oder vllt. auch wie ich die Rechung besser umsetzten kann

    Danke und Gruß
Working...
X