Autor Beitrag
Mieu
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 30.08.07 12:26 
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!

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 30.08.07 12:51 
Hallo,

bei dieser Variante eines Taschenrechners (ohne Eingabefeld) kannst Du so vorgehen:
  • Beim Programmstart sind die Operator-Buttons deaktiviert.
  • Erst nach Eingabe der ersten Ziffer werden sie aktiviert; dadurch hast Du für den ersten Operanden mindestens eine Ziffer.
  • Nach der ersten Berechnung werden die Ziffern-Buttons deaktiviert; nur die Operator-Buttons stehen zur Verfügung.
  • Nach dem Drücken eines Operators werden die Ziffern freigeschaltet.

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