Ver Mensaje Individual
  #34  
Antiguo 27-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 28
Delphius Va camino a la fama
Bueno si hay algo que no me gusta es que yo quede como el "malo de la película".

Viendo que no hubo nada nuevo por aquí decidí arrojar un poco de luz sobre rauros para ver si con ello se ilumina y entiende por donde van las cosas.

Hice un pequeña función, algo simple, que recibe una ecuación elemental en notación polaca inversa (string) y calcula el resultado (float).

Creería que con este simple ejemplo rauros, y cualquier otro interesado en el tema, podría comprender de como proceder. Bueno... no más rollo aquí va el código:
Código Delphi [-]
function TForm1.CalcularEcuacion(Ecuacion: string): real;
// CalcularEcuacion es una funcion que realiza cálculos de ecuaciones
// simples del tipo: Operando1#Operando2Operador
// Por ejemplo: 21#12+, es equivalente a hacer 21 + 12.
// Los operadores permitidos son: +,-,*,/

// La función puede trabajar con números reales.
// NOTA: no tiene demasiados controles, es sólo una demostración.
const
  FLAG = '#'; // nuestra bandera!
var i,len: integer;
    op1,op2: real; //operandos
    res: real; //resultado
    pos_flag: integer;

    aux: string;
    oper: char;
begin
    res := 0;

    len := Length(Ecuacion);  // calculamos el "tamaño"
    pos_flag := Pos(FLAG,Ecuacion); // obtenemos la posicion de bandera

    // Obtenemos operando 1
    for i := 1 to (pos_flag - 1) do
      Aux := Aux + Ecuacion[i];

    op1 := StrToFloat(Aux);

    //preventiva..
    Aux := '';

    // Obtenemos operando 2
    for i := (pos_flag + 1) to (len - 1) do
       Aux := Aux + Ecuacion[i];

    Op2 :=  StrTofloat(Aux);

   // obtenemos el operador
   oper := Ecuacion[len];

   //calculamos según el operador
   case oper of
   '+': res := Op1 + op2;
   '-': res := op1 - op2;
   '*': res := op1 * op2;
   '/': if op2 <> 0.0
           then res := op1 / op2;
   end; // fin case

   result := res;
end;

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita