• Jueves 18 de Abril de 2024, 21:23

Autor Tema:  LEER CARACTER COMO ENTERO.  (Leído 1267 veces)

Snajdan

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
LEER CARACTER COMO ENTERO.
« en: Sábado 3 de Abril de 2010, 05:21 »
0
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.

DriverOp

  • Miembro MUY activo
  • ***
  • Mensajes: 201
    • Ver Perfil
Re: LEER CARACTER COMO ENTERO.
« Respuesta #1 en: Sábado 3 de Abril de 2010, 06:34 »
0
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 (Evaluador de Expresiones).