Registriert seit: 10. Feb 2006
255 Beiträge
Delphi XE2 Professional
|
Re: Rechenvorschriften beachten.
28. Apr 2006, 07:16
Also ich habe dieses Problem (in Delphi) so gelöst, Stichwort: Rekursion.
Delphi-Quellcode:
Function TFloatEdit.Evaluate(AValue: String) : extended;
var
sop1, sop2: string;
op1, op2 : extended;
func : char;
i : integer;
done : boolean;
begin
sop2 := trim(AValue);
if sop2 = ' ' then sop2 := ' 0';
done := false;
// Addition + Subtraktion
i := Length(sop2);
while (i > 2) and not done do begin
if sop2[i] in [' +', ' -'] then begin
sop1 := copy(sop2, 1, pred(i));
func:= sop2[i];
delete(sop2, 1, i);
op1 := Evaluate(sop1);
op2 := Evaluate(sop2);
case func of
' +': Result := op1 + op2;
' -': Result := op1 - op2;
end;
done := true;
end;
dec(i);
end;
// Multiplikation u. Division
i := 2;
while (i < Length(sop2)) and not done do begin
if sop2[i] in [' *', ' /'] then begin
sop1 := copy(sop2, 1, pred(i));
func:= sop2[i];
delete(sop2, 1, i);
op1 := Evaluate(sop1);
op2 := Evaluate(sop2);
case func of
' *': Result := op1 * op2;
' /': Result := op1 / op2;
end;
done := true;
end;
inc(i);
end;
// Keine weitere Operation
if not done then
Result := StrToFloat(sop2);
end;
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
|
|
Zitat
|