Hallo,
ich habe eine Frage zu C++, aber eigentlich könnte könnte man das Problem auch in jeder anderen belibigen Programmiersprache behandeln. Also ich habe follgende Aufgabenstellung:
--------
Es wird eine Rechenaufgabe der Form: a + b in die TextBox eingetragen (Grundrechenarten).
Nach betätigen des Buttons soll das Ergebnis in der Form a + b = c in der gleichen TextBox
ausgegeben werden, a, b, c sind Gleitpunktzahlen.
Zusatzaufgabe: Die Rechnung besteht aus beliebig vielen Operanten.
--------
Bis jetzt haben ich das durch follgenden Quelltext gelöst, der linear durch den Stringgeht, die Zahlen zwichen den Operatoren ausließt und sie dann anhand der Operatoren zusammenrechnet.
Code:
private: System::Void btnOk3_Click(System::Object * sender, System::EventArgs * e)
{
int anf=0,i;
double erg=0;
char oper='+';
String* Zahl;
for(i=0;i<tbxAufgabe3->Text->Length;i++){
if((tbxAufgabe3->Text->Chars[i]=='+')||(tbxAufgabe3->Text->Chars[i]=='-')||(tbxAufgabe3->Text->Chars[i]=='*')||(tbxAufgabe3->Text->Chars[i]=='/')||(i == tbxAufgabe3->Text->Length-1)){
if(i == tbxAufgabe3->Text->Length-1){
Zahl = tbxAufgabe3->Text->Substring(anf,i-anf+1);
}else{
Zahl = tbxAufgabe3->Text->Substring(anf,i-anf);
}
switch(oper){
case '+': erg=erg+Convert::ToDouble(Zahl); break;
case '-': erg=erg-Convert::ToDouble(Zahl); break;
case '*': erg=erg*Convert::ToDouble(Zahl); break;
case '/': erg=erg/Convert::ToDouble(Zahl); break;
}
oper = tbxAufgabe3->Text->Chars[i];
anf = i+1;
}
}
tbxAufgabe3->Text = String::Concat(tbxAufgabe3->Text,"=",Convert::ToString(erg));
}
Funktioniert soweit auch ganz gut, nur wird dabei nicht beachtet, dass man Punktrechnungen vor Strichrechnungen machen muss. Hat jemand eine Idee, wie ich das am Besten angehen könnte?!
gruß
Evian
Edit: Wenn jemand die Lösung kennt, sie aber nur in Object Pascal angeben könnte, dann würde mir das schon reichen.