C/Visual C - Parametro cadena - return valor

 
Vista:

Parametro cadena - return valor

Publicado por Alberto (20 intervenciones) el 26/02/2002 00:27:22
Amigos:
Alguien podria indicarme como hace una funcion o dll que reciba como un parametro de tipo cadena de la forma 2+ 5*sin(3.1415/2)

y de como resultado un numero. En este caso 7.
Y de ser posible que evalue un if. de la forma: if (5>10) 1;else 0;
y retorne 0, en este caso

Alguna sugerencia?
Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:nesesito saver sobre siclos porfavor

Publicado por Josep (29 intervenciones) el 27/02/2002 21:00:32
Hola, y ... buf con la pregunta, jejeje

a ver se me ocurren dos formas ahora asi de golpe:
1) Sin usar TAD's (tipos abstractos de datos)
el objetivo seria coger el operador, parametro1 y el parametro2 (en este orden). Por ejemplo:
// Ejemplo con la suma. En codigo incompleto y con pseudocodigo.
double RESUELVE (CString s)
{
CString strPar1, strPar2;
double dPar1, dPar2;
strPar1=atol(s.Left(s.Find("+"));
dPar1=atof(strPar1.GetBuffer(0));
strPar2=s.Right(s.Length()-s.Left(s.Find("+")));
dPar2=atof(strPar2.GetBuffer(0));
if (dPar1==0) dPar1=RESUELVE(strPar1);
// dPar1==0 --> no es un número entonces volver a calcular...
if (dPar2==0) dPar2=RESUELVE(strPar2);
// dPar2==0 --> no es un número entonces volver a calcular.
return(dPar1+dPar2)
}

Inconveniente: no se puede usar el 0: 0+23 --> error
Y dificultat para usar funciones (cuándo sabes que hay una funcion?)

2) usando TAD's
Lo mejor es transformar el string a un arbol binario y luego aplicar una funcion que calcule el resultado a partir del arbol.
CString strCadena;
CArbBin abCalc;
double dResultado;

abCalc.creaArbol(strCadena);
dResultado=abCalc.resuelve();

Espero que te haya orientado en tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar