mehrere Zahlen ausrechnen Windows Forms Taschenrechner?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich denke, am einfachsten machst du es dir, wenn du jede Eingabe (Zahl/Operator) in eine Liste einfügst.

Private Property inputData As New List(Of String)

' add:
inputData.Add("...")

' get:
Dim first As String = inputData(0)
Dim last As String = inputData(items.Count - 1)

' clear
inputData.Clear()

Wenn du eine Zahl einfügst, solltest du schauen, ob der letzte Eintrag (sofern die Liste überhaupt schon Einträge hat) keinem Operator entspricht, denn dann hast du eine Zahl mit mehreren Stellen. In dem Fall verbindest du den letzten Eintrag mit der Eingabe.

inputData(items.Count - 1) += "..."

Wenn das Endergebnis berechnet werden soll, müsstest du aus den Einträgen Dreierpaare bilden, die zusammengerechnet werden können. Zuvor würde ich eine Validation vornehmen: Wenn der erste/letzte Eintrag einem Operator entspricht, wird dieser entweder entfernt oder du fügst der Liste einen weiteren Eintrag (0 bei Addition/Subtraktion und 1 bei Multiplikation/Division) hinzu. Eine Validation/Korrektur für mehrere Operatoren nacheinander (Bsp.: ++) sollte bereits bei der Eingabe getätigt werden.

Den Rechenvorgang kannst du in zwei grobe Schritte unterteilen:

Im ersten Schritt suchst du nach allen Einträgen des Multiplikations/Divisionsoperator und multiplizierst/dividierst dann den Vorgänger- und Nachfolgereintrag miteinander. Das Ergebnis kann an die Stelle des Vorgängereintrags geschrieben werden, die beiden anderen Einträge werden gelöscht.

inputData.RemoveAt(index)
inputData.RemoveAt(index + 1)

Im zweiten Schritt tust du im Prinzip dasselbe, nur diesmal mit Fokus auf die Addition/Subtraktion.

Beschäftige dich dafür mit der For...Next-Schleife.

.NET bietet dafür Funktionen, die das von Haus aus können. Ich glaube, das war die DataTable Klasse oder so mit der Compute Methode. Gerne mal recherchieren.

Wenn es aber um das reine selber machen geht, dann sehe ich nur die eine Lösung: Splitten.

Splitte den String in seine Einzelteile und durchlaufe es Stück für Stück in einer Schleife. Damit wären nur noch nicht die Punkt vor Strich Rechnungsregeln beachtet. Da müsste man auch nochmal ran. Dann könnte man schauen: a + b * c. Ist nach a ein +? Dann ist nach b ein Plus? Nein? Rechne erst b * c. Nach c ein +? Nein? Auch kein Mal? Ok, dann a + Ergebnis von b&c. Man kann hierbei zum Beispiel mit einer for Schleife arbeiten und mit dem iterator index kann man wunderbar hin und herspringen.


JulianOnFire 
Fragesteller
 17.07.2023, 09:15

Danke erstmal. Bin leider erst Anfang zweite Woche in der Ausbildung. Ist alles noch etwas komplizierter für mich, gerade mit Begriffen die man noch nie gehört hat. Ich schaue mal wie weit ich komme.

0