Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: miguelgrau en 28 Junio 2014, 05:24 am



Título: no se me ocure como desarrollar
Publicado por: miguelgrau en 28 Junio 2014, 05:24 am
 permita ingresar un cálculo genérico por medio de un string. El mismo permite el ingreso de múltiples términos, la utilización de paréntesis y todas las funciones admitidas . Por ejemplo, se le podrá ingresar la siguiente operación:
12.3*e^(0.5*3)*sin(12*3+0.3)
Como guía tenga en cuenta que:
Será conveniente trabajar con strings hasta obtener el resultado final. En la resolución primero deberá identificar el primer paréntesis a resolver (de no haber ningún paréntesis se debe resolver siguiéndose las reglas de prioridad de operaciones del álgebra); a continuación resolver las funciones fundamentales (potencias y trigonométricas); luego, separar en términos para resolver cada uno de ellos; y finalmente, realizar la suma de términos.
En cada uno de los pasos el contenido resuelto se devolverá en un string que servirá para reemplazar la operación evaluada dentro de la fórmula original.
Para procesar los paréntesis, desarrolle una función que responda al siguiente prototipo:
Void ObtenerInteriorParentesis(char* strFormula, char* strIntPar);
donde strFormula es el puntero a char que referencia al string leído desde teclado con la fórmula completa, y strIntPar es el puntero a char que referencia al string que encierra la fórmula parcial entre paréntesis.
Tenga en cuenta que el primero a resolver será cuando encuentre una apertura de paréntesis y luego un cierre.
Desarrolle una función que reemplace una sección de un string (una operación) por otra (su resultado), permitiendo que su tamaño sea diferente:
void ReemplazaSubString(char* strOriginal, char* strReemplazado, char* strReemplazo)
donde strOriginal es el puntero a char que referencia al string completo, strReemplazado es el puntero a char que referencia a la cadena de caracteres a ser reemplazada y strReemplazo es el puntero a char que referencia al string de reemplazo.

 Otras funciones de utilidad podrían:
Verificar que la cantidad de paréntesis de apertura y cierre sean iguales.
Buscar un caracter particular dentro de un string. De esta forma podrá identificar los operadores y funciones admitidas.
Resolver los paréntesis de forma recursiva hasta eliminarlos en su totalidad.


Título: Re: no se me ocure como desarrollar
Publicado por: engel lex en 28 Junio 2014, 05:31 am
usa <string> con la funcion find busca la posicion de todos los simbolos que te interesen, separa todo usando substr en cadenas de prioridades, preferiblemente en un array dinamico...

resuelve primero las independientes, por ejemplo los parentesis que no dependen de otro calculo, luego, las que dependan de las que acabas de resolver, y así....

para ser sincero no leí todo, pero con fin y substr debes poder resolver por lo menos el primer 50% del problema D:


Título: Re: no se me ocure como desarrollar
Publicado por: miguelgrau en 28 Junio 2014, 21:28 pm
el problema q tengo creo q es no lo tengo bien claro los puntros y array


Título: Re: no se me ocure como desarrollar
Publicado por: engel lex en 28 Junio 2014, 21:42 pm
Ese programa entonces lo veo un poco complicado para tu nivel :s estudiate un poco esos temas ya que creo que eso es lo mínimo... no se si otro usuario podría dar otra solución, eso es una taréa?