Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-04-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Algoritmo de analisis de integridad de Calculo

Algoritmo de analisis de integridad de Calculo

Quiciera desarrollar una función, para analizar la integridad de un calculo matematico con operaciones simples +,-,* y /, usando parentecis, corchetes y llaves.
Unos ejemplos:

(A + B)
[(A+B)*C]-D

serian correctas, y

(A + ) B
(A+B)D*4)

serian incorrectas, puesto a la incosistencia de signos de operacion y/o parentesis.

Me gustaria que me dieran opiniones respecto al tema, e ideas de como lo resolverian.

Saludos y muchas gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 15-04-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola MaMu,
Creo que para lo que buscas es muy buena idea optar por notación polaca inversa.

La forma en cómo se evalúan los paréntesis, corchetes y llaves, por lo general se consigue con pilas. Se van encolando los signos ( en la medida en que se leen. En cuanto se lee un ) se da por entendido de que una expresión se ha entendido y por tanto se desapila el ( guardado. Este proceso se puede llevar de forma análoga con los corchetes y llaves.

Tal vez lo que se trató en otra ocasión sea de utilidad.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 16-04-2009
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola MaMu,
Creo que para lo que buscas es muy buena idea optar por notación polaca inversa.
Me parece exelente. Pero la verdad, me maree un poco:

Código Delphi [-]
const 
  Abre = '(';
  Cierra = ')';
 
//(1+2)+4*(5+2)
function RPNCalculo(Calculo : String) : Boolean;
var
  nPos, nCalc, Resultado: Integer;
  StrChar: Char;
  Pila : TStringList;
  UltimaOperacion : String;
begin
  result := false;
  Pila := TStringList.Create;
  for nPos := 1 to Length(Calculo) do
  begin
    StrChar := Calculo[nPos];
    if StrChar in ['0','1','2','3','4','5','6','7','8','9'] then
    begin
      Pila.Add(StrChar);
      if (UltimaOperacion<>'') then
      begin
        Resultado := 0;
        for nCalc := 0 to Pila.Count -1 do
        begin
          Resultado := Resultado + StrToInt(Pila.Strings[nCalc]);
        end;
        Pila.Clear;
        Pila.Add(IntToStr(Resultado));
      end;
    end
    else if StrChar in [ABRE,CIERRA] then
    begin
    end
    else if StrChar in ['+','-','*','/'] then
    begin
      if Calculo[nPos + 1] in [ABRE,CIERRA] then
      begin
        UltimaOperacion := '';
      end  
      else UltimaOperacion := StrChar;
    end
    else
    begin
      UltimaOperacion := '';
    end;  
  end;
  Pila.Free;
end;

No se que hago mal, no doy pie con bola de la congestion.
Alguna ayuda????

Saludos y Muchas Gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 16-04-2009
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Hay componentes que te hacen el trabajo sucio, busca por Parse o Parsing http://www.torry.net/pages.php?id=307
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Algorítmo de cálculo del CIF (Código Identificación Fiscal) Ñuño Martínez Varios 9 08-04-2009 12:18:52
Analisis de un sistema Puberta Varios 40 15-12-2007 03:54:15
Analisis de sistemas Garnet Varios 3 23-10-2005 04:02:49
Análisis Químico Nuria Humor 5 04-05-2004 17:15:52


La franja horaria es GMT +2. Ahora son las 14:32:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi