Rechenaufgabe als String in einem Double übergeben
-
Hallo,
ich möchte gerne eine Rechenaufgabe die in einem String gespeichert ist,
ausrechnen lassen und ausgeben...Das hier funzt aber nicht so...
String^ _rechnung = "12 * 10 + (10 * 2) - 8"; double _ergebnis = Convert::ToDouble(_rechnung); label1->Text = _ergebnis.ToString();
Wie kann ich so was lösen?
Gruß
Fredd
-
So einfach wie in Scriptsprachen geht das in C++/CLI nicht.
Du hast drei Möglichkeiten:
1. Arbeite mit C# oder C++ und verwende einen Parser.
http://www.codeproject.com/info/search.aspx?artkw=c%2B%2B+math+parser2. Verwende C# und Codegenerierung zur Laufzeit.
http://www.codeproject.com/KB/recipes/matheval.aspx3. Du willst trotzdem C++/CLI verwenden:
Setz dich ruhig in eine Ecke und warte bis es vorüber geht.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html
-
Alternativ kannst auch, wenn du .Net Framework 3 hast (oder Lust hast rumzufrickeln) System.Linq.Expression nehmen für den Codegenerator-part, (Ist einfacher als CSharpCodeProvider und sicherer).
-
Vielen Dank für die Antworten.
Jetzt überlege ich, ob ich das nicht über die math.h gelöst bekomme.
Hat das schon mal gemacht?
-
Ein Parser ist in ISO-C++ nach 120 Zeilen Code gemacht für Ausdrücke dieser Art. Ich habe 'nen Code (unmanaged C++) hier, wenn du willst, kann ich ihn posten.
PS: Wenn du "Die C++ Programmiersprache" oder "Programming" von Stroustrup hast, findest du darin auch eine solche Implementierung. Vllt. hat Google ja den Code auch irgendwo.
-
Das wäre mega nett von Dir.
Kannst Du den Code Posten, dass Buch habe ich leider nicht.
-
[OT] Führende Underscores sind jetzt kuhl oder was?
[/OT]
-
Kuhl????
Was redest Du da hustbaer???
Hääää?
-
Eine lokale Variable "name" zu nennen halte ich für plem.
Wenn dann führendes "" als Klassifizierung für Member-Variablen.
Aber jeder wie er meint.
-
hustbaer schrieb:
Eine lokale Variable "name" zu nennen halte ich für plem.
Wenn dann führendes "" als Klassifizierung für Member-Variablen.
Aber jeder wie er meint.Das ist doch gar nicht das Thema.
Da kannst Du mir nicht weiter helfen? Oder?
-
Ach, und cool, kuhl zu schreiben ist auch cool.
-
Fredd schrieb:
hustbaer schrieb:
Eine lokale Variable "name" zu nennen halte ich für plem.
Wenn dann führendes "" als Klassifizierung für Member-Variablen.
Aber jeder wie er meint.Das ist doch gar nicht das Thema.
Da kannst Du mir nicht weiter helfen? Oder?
Dir wurde doch schon geholfen. Eine einfache Möglichkeit, wo du nix selber programmieren musst bzw. dich nirgends einlesen gibt es in C++/CLI nunmal nicht. Ist wie schon mehrfach erwähnt wurde eben keine Scriptsprache.
Wenn die Syntax nicht vorgeschrieben ist, kannst du u.U. eine einfach integrierbare Scriptsprache ala TCL einbinden.
Davon abgesehen ... mach deine Hausaufgabe/Arbeit/... hübsch selbst
-
Fredd schrieb:
Ach, und cool, kuhl zu schreiben ist auch cool.
Ja, natürlich, was denkst du denn?
-
ist zwar Java - aber mit entsprechenden Fähichkeiten (um bei kuhl zu bleiben) sollte es klappen das auf C++/CLI umzusetzen und um entsprechende Funktionen zu erweitern
-
1. Werden Membervariablen ein kleines m vorangestellt, z.B. m_Test.
2. Das ist keine Hausaufgabe.
3. Manchmal ist schweigen die beste Antwort.Danke Mogel, ich werde das mal umsetzen, nur ich bezweifele, dass dieser Code eine Rechnung in dieser Art schafft: 12*45-(78+3)/2
Danke Euch
-
Fredd schrieb:
Danke Mogel, ich werde das mal umsetzen, nur ich bezweifele, dass dieser Code eine Rechnung in dieser Art schafft: 12*45-(78+3)/2
ja da fehlten die Klammern - ist nun mit bei