Frage von derfragenheini, 49

Csharp Taschenrechner?

Hallo Leute. Ich habe mit C# einen Taschenrechner programmiert. Dieser funktioniert auch. Allerdings ließt dieser erst Zahl 1 dann Zahl 2 und dann den Operator ein. In einem Switch case überprüfe ich welcher operator eingegeben wurde. Nulldivision wurde beachtet. Wird bei Zahl1 ein char eingegeben wird das erkannt und erneut nach Zahl1 gefragt. Mein Problem ist, dass ich die Rechnung in nur EINER Konsoleneingabe des Benutzers möchte und diese dann berechnet wird. Nach mehreren Tagen suche im Internet habe ich nichts gefunden, was mir weiter hilft. Kann mir jemand von euch weiterhelfen?

Antwort
von valvaris, 31

Das wäre dann ein Formelparser. Die sind relativ aufwändig, aber ein Ansatz, je nachdem, was er leisten soll...

Per regex ([0-9]+)([\+\-\*\÷\/])([0-9]+) abfragen, die ergebnisse in 3 variablen stecken und deine Methoden weiterverwenden.

Kurz zur Regex: In den runden Klammern stehen die Sachen, welche in die 3 Variablen kommen. in den eckigen Klammern Sachen, die dafür okay sind.

Also in der 1. und 3. Eine Ziffer von 0-9 und zwar mindestens 1x, aber beliebig viele zusammen (sagt das + dahinter)

In der mittleren Klammer eins der Zeichen aus der eckigen Klammer (denk dir die \ weg, die sind nur der Hinweis, dass der da nix interpretieren, sondern das einfach als Char hinnehmen soll)

Gültig wäre also beispielsweise 673+174
Und umgesetzt sähe es so aus (673)(+)(174)

Kommentar von derfragenheini ,

kannst du mir vielleicht sagen wie ich das was in den Klammern steht dann in eine Variable bekomme? Gibt es da etwas womit ich auf die stelle deuten kann? Also z.b. auf die 2. von 3 stellen und das dann in einer char variable speichern.

Kommentar von valvaris ,

es gibt in c# die Regex Klasse. Da gibts die Match-Funktion, die auf Übereinstimmung testet und die sollte als 3. Parameter ein Array nehmen, wo es die Werte rein packt.

Kommentar von valvaris ,

korrektur. der Return-Wert ist das Array. https://msdn.microsoft.com/de-de/library/twcw2f1c(v=vs.110).aspx

Antwort
von derfragenheini, 7

Kann ich denn Theoretisch einfach die Tastatur Eingabe einlesen? Habe mir es so vorgestellt das die Zahlen am anfang in string x gesteckt werden der konvertiert wird. Sind es keine zahlen dann Fehlermeldung. Operator geht ja locker mit switch case und mit zahl2 dann das gleiche wie mit zahl 1. Mein problem ist, ich habe einen plan wie das Programm aussehen soll, weiß aber nicht wie ich es umsetzen kann.

Antwort
von Bananenbrot24, 29

Wenn die Eingabe als String erfolgt, loope einmal durch, bis ein Rechenoperator kommt -> Erste Zahl + Rechenoperator

An dieser Stelle kannst du den String dann splitten, um die Zweite zahl zu erhalten und die Rechnung durchführen.

Kommentar von valvaris ,

und negative zahlen? -10+5...

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten