Humberto,

O código a principio funciona, mas não obedece as regras matemáticas numa 
equação. por exemplo:

"20 + (30 * 2)"
o resultado deveria ser 80, no seu código ele me traz o valor de 100, ou seja 
soma para depois multiplicar. Consegue me ajudar nisso ?

grato




--- Em delphi-br@yahoogrupos.com.br, humberto sales de oliveira 
<humberto_...@...> escreveu
>
> coloque um edite com sua operacao, em um button insira o seguinte codigo:
> 
> var
> operacao : array[0..10] of double;
> operador : array[0..10] of char;
> x,z,z1 : integer;
> vr,s : string;
> begin
> for x := 0  to 10 do
>  begin
>      operacao[x] := 0;
>      operador[x] := #0;
>  end;
> vr := '';
> s := edit1.text;
> if copy(s,length(s),1) <> ' ' then
>    s := s + ' ';
> z := 0;
> z1 := 0;
> for x := 1 to length(s) do
>   begin
>       case s[x] of
>        '(' : continue;
>        ')',' ' : begin
>                         if (vr <> '') then
>                           begin
>                           operacao[z] := strtofloat(vr);
>                           inc(z,1);
>                           end;
>                           vr := '';
>                  end;
>        '0'..'9' : vr := vr + s[x];
>        '+','-','*','/' : begin
>                          operador[z1] :=  s[x];
>                          inc(z1);
>                          end;
>       end;
> 
>   end;
> for x := 0  to 10 do
>  begin
>      case operador[x] of
>       '+'  : operacao[0] := operacao[0] + operacao[x+1];
>       '-'  : operacao[0] := operacao[0] - operacao[x+1];
>       '/'  : operacao[0] := operacao[0] / operacao[x+1];
>       '*'  : operacao[0] := operacao[0] * operacao[x+1];
>       end;
>  end;
>       showmessage(floattostr(operacao[0]));
> end;
> 
> 
> > Pessoal, 
> >
> > tenho uma string montada e preciso converte-la para um valor numerico de 
> > forma que o cálculo seja realizado.
> >
> >
> > Ex: "(100 + 20) / 4"
> >
> > Na verdade preciso que isso me retorne uma variavel com o valor= 30.
> >
> > Alguem ja fez algo parecido ?
> >
> >
> >
>


Responder a