Entwickler-Ecke

WinForms - Taschenrechner


Mieu - Do 30.08.07 12:26
Titel: Taschenrechner
Hallo,

ich bin gerade dabei einen Taschenrechner zu programmieren.
Ich bin neu auf dem Gebiet c# und .net.
Das Problem dass ich habe ist folgendes.
Wie kann ich festellen, dass eine Zahl vollständig eingegeben wurde. Die Zahlen werden ja per Buttons eingegeben und können ja 1, 3 oder auch 6 stellig sein.
Ich habe das momentan so gelöst, indem ich gucke ob der Nutzer ein Operationszeichen eingibt. So werden all Ziffern zu einer Zahl bis eine Operand eingegeben wird.
So ist das Problem aber, das der Nutzer ja ein Operand eingeben kann bevor er überhaupt irgendwelche Ziffern drückt.

Ein weiteres Problem ist, nachdem eine Operation berechnet z.B. 3+4 und als Ergebnis 7 erhalten wurde,
kann der Nutzer nicht mehr 2 Zahlen eingeben und diese Operation ausführen lassen.
Man kann nur mit dem letzen Ergebnis weiter rechnen, also in diesem Fall die 7.

Hier ein paar Funktionen:
Vielleicht kann mir einer ein paar Tips geben.
Vielen Dank!


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
private void buttonClick(object sender, EventArgs e) {
 
            Button n = (Button)sender;
            this.label1.Text += n.Text;

            if (operationFill == true)
            {
                numberFill = true;
            }

            if (number1Fill == false) { 

                number1 = Convert.ToDouble(label1.Text);                       
            }
            else {

                number2 = Convert.ToDouble(label1.Text);                
            }
        }

 private void operatorClick(object sender, EventArgs e) {

            Button op = (Button)sender;
            operation = op.Text;
            operationFill = true;
        }

private void enterClick(object sender, EventArgs e)
        {
            if (numberFill == true && operationFill == true)
            {
                calculate();
            }
        }

 private void calculate() {

            switch (operation)
            {

                case "+":
                    number1 += number2;
                    break;
                case "-":
                    number1 -= number2;
                    break;
                case "*":
                    number1 *= number2;
                    break;
                case "/":
                    number1 /= number2;
                    break;
            }
            
            label1.Text = Convert.ToString(number1);
        }


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


JüTho - Do 30.08.07 12:51

Hallo,

bei dieser Variante eines Taschenrechners (ohne Eingabefeld) kannst Du so vorgehen:

Diese Prüfungen kannst Du noch stark erweitern.
Viel Erfolg! Jürgen