Einzelnen Beitrag anzeigen

webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Rechenvorschriften beachten.

  Alt 28. Apr 2006, 06: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
  Mit Zitat antworten Zitat