Problem mit Taschenrechner C#

Kamil1984

Grünschnabel
Hallo liebe Programmierer,
bin gerade am erstellen eines Taschenrechners und komme nicht mehr weiter. Er tut schon halbwegs das was er soll allerdings nur halbwegs.
Ich gebe Zahlen mit den Buttons 1-9 ein und nach klicken von hier besipielsweise Mal weist er dWert1 die Zahl der TextBox zu.

Code:
        private void buttonMal_Click(object sender, EventArgs e)
        {

            dWert1 += double.Parse(textBox1.Text);
            minus = true;
            plus = false;
            mal = false;
            geteilt = false;
            button = true;
        }
Der gleich Button löst dann folgendes aus:

Code:
        private void buttonErgebnis_Click(object sender, EventArgs e)
        {
            if (mal == true)
            {
                dWert2 =  dWert1 * (double.Parse(textBox1.Text));
                minus = false;
                dWert1 = 0;
            }

         }

Das Problem ist, dass er falsch rechnet. 5*5=25 Ist kein Problem.
Sobald aber eine dritte Zahl dazukommt als z.B. 5*5*5 kommt statt 125 nur 50 raus. Das erklär ich mir so, dass er 5+5*5 rechnet.
Habe es auch so probiert:

Code:
            dWert1 = double.Parse(textBox1.Text);
Damit erreiche ich aber nur das er immer nur 2 Zahlen mal nimmt.
Ich hab leider keine Idee mehr un bitte euch mir zu helfen sitze schon seid gestern dran smile
Ich danke im Voraus
MfG
Kamil
 
Code:
dWert1 += double.Parse(textBox1.Text);
+= bedeutet du addierst den aktuellen Wert von dWert1 mit textBox1
müsste ein = sein.

Nachtrag:
Ups haste ja unten. ^^
Leg dir einfach eine weitere Summen Variable an die immer weiter gesetzt wird bis der Taschenrechen gecleart wird.

Nochn Nachtrag:
so ungefähr
Code:
dWert2 *= (double.Parse(textBox1.Text));
dWert2 ist der Summenwert und wird einfach immer weiter gesetzt
Code:
dWert2 += (double.Parse(textBox1.Text));
Code:
dWert2 -= (double.Parse(textBox1.Text));
Code:
dWert2 /= (double.Parse(textBox1.Text));
 
Zuletzt bearbeitet:
Hallo, danke für die Antwort. Das ist zwar richtig was du geschrieben hast jedoch hilft mir das für mein vorhaben nicht weiter. Ich habs wie folg gelöst

Code:
        private void buttonMal_Click(object sender, EventArgs e)
        {
            ListeWert1.Add(double.Parse(textBox1.Text)) ;  
            mal = true;
            plus = false;
            minus = false;
            geteilt = false;
            button = true;
            bKomma = true;

        }


Code:
            if (mal == true)
            {
                ListeWert2.Add(double.Parse(textBox1.Text));
                for (int i = 0; i < ListeWert1.Count; i++)
                {
                    for (int y = 0; y < ListeWert2.Count; y++)
                    {
                        
                         ListeWert2[y]*= ListeWert1[i];
                         dErgebnis = ListeWert2[y];
                    }
                }
                
                mal = false;
               
            }
Klappt mit mal und plus wunderbar jedoch rechnet er mir bei geteilt und minus falsch. Eventuell weiss da einer weiter!?

Code:
                        ListeWert2[y] /= ListeWert1[i];
Danke

MfG
 
Hast du im Debugger schon mal überprüft, welche Werte die beiden Variablen annehmen, bevor die Berechnung stattfindet?
 
8/4=2 Klappt. Kommt nun eine dritte Zahl dazu also z.B. 8/4/3 = 1,3333 was natürlich falsch ist. Er rechnet nur 4/3 die 8 nimmt der garnicht mehr mit warum auch immer. Wie gesagt plus und mal funktionieren einwandfrei. Danke für deine Antwort, dachte ich wäre schon im falschen Forum :)
 
Wofür genau benutzt du denn die ListeWert2? Das wird mir gerade nicht ganz klar. Und wieso nutzt dir eine globale Variable nichts, die die Summe aufnimmt?
 
Hallo,
also ich gebe zahlen 5+5+5 das speichert er mir schön in ListeWert1. Sobald ich auf "Gleich" bzw Ergebis drücke, weisst er den letzten Wert ListeWert2 zu. Wie meinst du das mit globale Variable?
Danke
MfG
 
Wenn in ListeWert2 nur ein Wert steht, dann musst du da keine ArrayList oder ähnliches verwenden, sondern einfach eine normale Double Variable.

Mit Globale Variable meine ich, dass du dir eine Variable erstellst, die immer das Ergebnis aufnimmt. Kann jetzt auf die schnelle keine Beispiel geben, da ich eigentlich nicht C# programmiere.

Du nimmst dir eine Variable. z.B. "Ergebnis".

Bei deinem Gleich-Button durchläufst du jetzt in einer Schleife alle Einträge aus ListeWert1.

Beispiel Multiplikation:

Code:
Für alle X in ListeWert1
    Ergebnis *= ListeWert1
Nächstes X

Ergebnis hält dann dein Ergebnis, welches du ausgeben kannst. Das ganze musst du natürlich in "richtigen" Quellcode übersetzen.
 
Hallo,
achso das meinst du ja hab ich ja dErgebnis. Hab es jetzt so probiert wie du sagtest, rechnet halt nur die 2 letzten werte aus...Hab schon soviel probiert...muss auch sagen das ich c# erst seid ner woche mache hab ansonsten nur c++ kenntnisse
MfG
 
Zurück