Algorithmus - Lösung der linearen Gleichung in einer Variablen [geschlossen]

9

Gegeben ein Ausdruck in Form einer Zeichenkette, löse nach x. Die höchste Potenz von x im Ausdruck wird gleich 1 sein. Zulässige Operatoren sind +, * und -. Dies sind alles binäre Operatoren. Also würde 2x als 2 * x geschrieben werden. Auf jeden Operator folgt ein einzelner Ausdruck oder eine Konstante.

Betrachten Sie zum Beispiel die folgende Gleichung:

2 · x + 5- (4 · x-7 + (4-2)) = 10 · x-9

Dies ist eine vollkommen gültige Gleichung. Ausdrücke der Form 1 * 2 * 3 sind ungültig, aber 1 * (2 * 3) ist gültig.

Angesichts einer solchen Gleichung müssen wir eine Lösung für x finden. Wenn die Gleichung ungültig ist, sollte das Programm eine Fehlermeldung anzeigen.

Kann jemand eine Idee darüber geben, wie dieses Problem gelöst werden kann? Das einzige, was mir gerade in den Sinn kommt, ist Lexikalische Analyse und Parsing mit kontextfreien Grammatiken. Aber ich habe das Gefühl, dass es eine viel einfachere Lösung gibt. Kann jemand etwas Licht darauf werfen?

    
Diptesh Chatterjee 02.12.2012, 17:30
quelle

1 Antwort

4

(1) Konvertiere e1 = e2 in e = 0 wo e = e1 - e2 .

(2) Konvertiere e in ax + b , für einige a und b .

(3) Lösen, x = -b/a .

Schritt (2) kann rekursiv wie folgt behandelt werden:

%Vor%     
Rafe 03.12.2012, 00:59
quelle