24karatboy hat folgendes geschrieben: |
| anscheinend scheint es doch ein wenig komplexer zu sein als ich dachte ... |
Zumindest stecken eine Reihe von Problemen darin. Meine Empfehlung sollte bedeuten, dass in einem der anderen Beiträge Ideen genannt sein dürften, von denen Du Dich inspirieren lassen könntest.
Ich habe so etwas noch nie gemacht (ich würde vorhandene Lösungen vorziehen), würde aber etwa so vorgehen:
- Unzulässige Zeichen im Ausgangsstring entfernen: Leerzeichen, Buchstaben usw.
- Potenzen nicht durch **, sondern einheitlich durch ^ darstellen (Suchen und Ersetzen)
- Dezimaltrenner vereinheitlichen durch Punkt
- Erzeuge aus dem String ein String-Array mit der String.Split-Methode (Char[]), das alle Zahlen-Strings enthält.
- Erzeuge parallel ein Char-Array (mit String.IndexOf), das die Rechenzeichen nach jeder Zahl enthält.
- Erzeuge ein Zahlen-Array (double - mit der Gefahr von Rundungsfehlern - oder decimal) und trage zu jedem Zahlen-String durch TryParse den Zahlen-Wert ein.
- Suche im Zeichen-Array eine Potenz, berechne Zahl1 hoch Zahl2, trage das Ergebnis statt Zahl1 ein und lösche das Potenz-Zeichen sowie Zahl2. Wiederhole das für alle Potenzen.
- Bearbeite in gleicher Weise die Punkt-Rechnungen Multiplikation, Division und modulo.
- Bearbeite in gleicher Weise die Strich-Rechnungen Addition und Subtraktion.
Wenn ich von Array gesprochen habe, empfehle ich
List<T>; dann sind die Standardmaßnahmen Add, Remove usw. schon vorbereitet.
Viel Erfolg! Jürgen