SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Snajdan en Sábado 3 de Abril de 2010, 05:21

Título: LEER CARACTER COMO ENTERO.
Publicado por: Snajdan en Sábado 3 de Abril de 2010, 05:21
Hola a todos, este es mi primer post.

Estoy aprendiendo a programar, y estoy intentando crear un programa que lea funciones matematicas y calcule su valor en un determinado rango.

Estoy empezando por los poliomios, lo que quería saber es :

El usuario ingresa x^6 por ejemplo, entonces lo que habia pensado era que lea el caracter despues del signo de elevar ^, lo que vendria a ser el numero, pero dado que lo ingresa en una variable string, mi pregunta es:

¿Como averiguo el número y como lo paso a una variable integer?.


Gracias.

Snajdan.
Título: Re: LEER CARACTER COMO ENTERO.
Publicado por: DriverOp en Sábado 3 de Abril de 2010, 06:34
Me temo que el problema general que quieres resolver es más complicado de como lo has planteado. Lo que quieres es un análisis sintáctico y semántico de una cadena de caracteres. Por ejemplo, esto es un polinomio:

x^2+6x+10

Esto no lo es:

diego^Dequis+123,56

Sin embargo para un lenguaje ambos son cadenas de caracteres sin más significado que ese.
Para que tu programa "entienda" la diferencia entre lo que es un polinomio y qué no, debes hacer un análisis sintáctico (que la cadena contenga caracteres en el orden y el lugar correctos) y un análisis semántico (que los elementos sintácticamente correctos tengan sentido).

Por ejemplo, esta cadena:

x+-1^x0+6

Sería sintácticamente correcta porque los símbolos contenidos en ella son todos permitidos para la construcción de un polinomio, pero la cadena no tiene sentido semántico (¿cuál es el exponente de la potencia? ¿x0 o x0+6?, en el primer caso el resultado es cero, y cualquier número elevado a la potencia cero está indefinido). Por otro lado para que una ecuación sea un polinomio solo debe admitir sumas, restas, multiplicación y potenciación, por lo tanto:

x2/x3

No es un polinomio (aunque es una expresión algebráica perfectamente válida).

Para resolver todos estos problemas se han escrito libros enteros en el tema de construcción de compliadores e intérpretes.

Tengo hecho un programa en Pascal que analiza una expresión algebráica y devuelve un resultado. Puedes verlo aquí: http://driverop.com.ar/pascal.php (http://driverop.com.ar/pascal.php" onclick="window.open(this.href);return false;) (Evaluador de Expresiones).