Introducir ecuaciones en C

Spank

Quería saber si había alguna posibilidad de leer ecuaciones de un fichero para un programa en C, me explico, en vez de yo introducir la función en el código y compilarlo que lea por ejemplo desde un fichero de texto x = x*x+4; y que utilice esta función, para no andar cambiando el código cada vez que quiera usar una función distinta.

Alguien sabe si se puede hacer eso en C, y si se puede algún método?

MTX_Anubis

por poder se puede claro pero te lo tendrás que programar tú xD

vamos no existe ninguna función mágica que coga un txt y convierta eso a una ecuación

Spank

no si no digo eso, digo que si alguien sabe como hacerlo para que en vez de hacerlo cada vez que lea del fichero lo incluya como una función.
Por ejemplo que yo rellene una vez para que esa función la detecte eso si se hacerlo, pero después lo digo para llamarla, si hay alguna manera o si alguien me dice como si tu lees "x = x*x+2;"
que se convierta en esto

double funcion(double x)
{
x = x*x+2;
return x;
}
Ž
eso es lo que yo quiero saber

B

#3

Si lo que quieres es resolver una ecuacion.....

esa funcion que has escrito te va a petar muy alegremente. El compilador te lo pasara por alto xD, pero no es ni mucho menos lo que tu quieres.

Si lo que quieres es que sea una funcion sin mas, entonces esta bien hecho, mirate uno de los mil ejemplos que hay para leer de fichero en google xD

Soltrac

Se puede, pero te vas a morir porque tienes q usar flex, bison, es decir, traductores.

Pq necesitas hacer eso q es un curro bestial cuando tienes programas superpotentes q ya lo hacen como mathematicas...etc?

MTX_Anubis

joder yo lo que creía es que querías resolver la ecuación que no es difícil aunque es un coñazo de la hostia

vamos que lo que quieres es si este es el txt:

x= x*x +2;
y= y/3;

cree las funciones:

double funcion1(double x)
{
return x*x+2;
}

double funcion2(double x)
{
return x/3;
}

no? Tienes que crear las funciones por huevos? Vamos, en uno de los laboratorios de programación que tuve teníamos que hacer un resolutor de ecuaciones recursivas bastante asqueroso y metiamos cada ecuación en una array xD

Te lo digo porque haciendolo así es sencillo pero no sé si te valdrá.

Spank

#4 la función en sí va bien xd porque hace la operación antes de machacarte x...la vagancia de no crear variables xDD

#6 en efecto

yo es que pensaba declarar if encadenados que recorrieran la cadena y en vista de las prioridades miraran las operaciones a realizar, por ejemplo recorrer la cadena y ver cuántas variables diferentes hay, si hay un * darle mas prioridad que a un + por ejemplo...iba a plantearlo así pero por eso pregunté vuestra opinión porque no se si saldrá de esa manera

podría hacer una función que recibiera el vector dinámico y tantos parámetros como la función necesite en forma de vector...y eso en teoría sería posible

C

En una ocasión programé lo que buscas (hace 2 años), pero en un lenguaje que no conoce ni el tato. En COOL de Cosmos. Y funcionaba bastante bien. No es complicado. De todas formas hay funciones por internet que hacen lo mismo.

B

#7

Yo lo decia pq pensaba que querias resolver ecuaciones, de hecho el titulo de tu post pone ecuaciones xD

Una ecuacion es una igualdad, no una funcion.

Spank

#9 pero las funciones no se pueden resolver xD es en cada punto que es una ecuación xDD bueno, que al final mandaré todo a la mierda que me veo que lo que estoy haciendo me va a petar como un campeón xd

Soleil

Como #5 ha dicho: flex + bison, o bien crearte tu propio parser a mano. (para ésto, lo suyo sería un LALR con un parser recursivo descendente: http://en.wikipedia.org/wiki/Recursive_descent_parser)

MaKi

Lo que pretendes hacer es una buena práctica de 2º.
con un analizador lexico y sintactico debes ir validando y cnstruyendote un arbol binario de expresiones ( http://informatica.uv.es/iiguia/AED/oldwww/2002_03/Practicas/Practica6/pr_06_2003.pdf ) despues tendrás que evaluar la expresión recorriendo el arbol por notación infija. En general antes de meterte con esta práctica deberías practicar bastante la recursividad.

bLaKnI

#5, #11, #12

Es lo que dicen.
Te comento que no es trivial.
Podrias intentar hacer algo con XML.
Gestionar tus propios niveles y forzar que en vez de un txt, sea una estructura jerárquica de previos operadores y variables intrínsecas.

Si no quieres "emmierdarte" con los señores Flex&Bison (que por cierto, es muy interesante y te puede ir bien conocerlo) yo miraria eso.

Empezaria con cabezeras de declaración de variables.
Posteriormente, schema de operantes y dentro, como actuan las variables con operantes propios.

Usuarios habituales