elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Como formo lo ecuacion completa?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como formo lo ecuacion completa?  (Leído 4,271 veces)
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Como formo lo ecuacion completa?
« en: 2 Abril 2011, 18:48 pm »

Estoy haciendo un programa q me calcularia las ecuaciones de primer grado, segundo grade y para arriba, y talvez luego hago q haga mas cosas de las q estoy aprendiendo en el colegio ya que te mandan muchos ejercicios y estaria bueno poder hacer un programa q te ayude con todo eso.
Lo que me interesa ahora es q me digan solo la idea de como podria hacer para cuando tengo un string = "2x-2(4+6)-2" lo pueda transformar a una ecuacion bien formada, es decir quedaria un string = "2x-22" si no me equivoco, ya q mi codigo si ingresan la ecuacion bien formada ax+b = 0 la realiza sin problemas, pero la idea es q lo pueda hacer con ecuaciones "informales"

Entienden mas o menos no? a esto lo puse en programacion general ya q solo quiero ideas, esque NO SE porq anduve pidiendo aca que me ayuden a separar en otras variables las cosas q estaban entre parentesis, pero ahora me di cuenta q no se si eso me servira :S

A ver si alguien me puede ayudar ahi, le agradeceria y cualkier aporte sirve, solo acuerdense q solo pido que cuando tenga un string = "2x-2(4+6)-2" lo pueda transformar a una ecuacion bien formada, es decir quedaria un string = "2x-22"

Desde ya Gracias!


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #1 en: 2 Abril 2011, 19:06 pm »

Creo que el planteamiento de ponerlo usando strings te está limitando.

Y si lees únicamente números y guardas el resultado en un vector?

ejemplo:

3x^3 +2x^2 -x +1 = 5 --> 3, 2, -1, 1 ,5  --> Para la forma "bien formada" que te interesa, simplemente sumas/restas el último al penúltimo. Resultado:

3x^3 +2x^2 -x -4 = 0 --> 3, 2, -1, -4 (x^3, x^2, x^1, x^0).

Otro ejemplo:


6x^3 -4=1: --> 6, 0, 0 ,-4, 1 --> 6, 0, 0, -5

Todo el tema de ecuaciones en computación se trabaja con matrices SIN las letras.

Ejemplo:

3x+2y-z =1
2x-y +z =2
x -y -z =5

resultado:

3 2 -1 1
2 -1 1 2
1 -1 -1 5


« Última modificación: 2 Abril 2011, 19:47 pm por Akai » En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #2 en: 2 Abril 2011, 19:36 pm »

Gracias akai! veo q tienes la idea bien clara, yo usaba string porq mi ecuacion pasa por unos procedimientos de filtros para detectar algunos errores, pero puedo convertirla a otro tipo luego entonces y hacer eso q dices aunque todavia no se me ocurre mucho como hacerlo pero creo q te entendi.
Una cosa aca cuando pusiste:
Citar
3x^3 +2x^2 -x -4 = 5 --> 3, 2, -1, -4 (x^3, x^2, x^1, x^0).

Querias poner esto no?:
Citar
3x^3 +2x^2 -x -4 = 0 --> 3, 2, -1, -4 (x^3, x^2, x^1, x^0).

Gracias, voy a ver si pienso un poco sino te pregunto alguna otra dudita q tengo ya q vs sabes C++ creo asique yo q lo estoy haciendo en C# algo te entendere
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #3 en: 2 Abril 2011, 19:55 pm »

Si, quería poner eso, hice un copy paste del otro ejemplo y se me olvidó cambiarlo.

Para hacerlo de esta manera, es más simple de lo que parece si lees un vector de enteros o floats:

Para la ecuaciń: 9x^2 -x +6 = 0 lees: 9 -1 6 0, 4 enteros. Si el último es 0, sabes que está "bien formada", y operas directamente para resolverla, sino, restas al penúltimo el último, y ya la tienes bien formada.

Por otro lado, tienes que "obligar" a introducir siempre todos los grados de la variable, o el método puede fallar:

si te introducen: 9x^4 -100 =0 de la forma: 9 -100 0 , tu método podría tomarlo como 9x -1=0, y por tanto, el método falla.
La entrada correcta para este caso sería 9 0 0 0 -100 0 que si da como resultado la ecuación esperada

Creo que has comentado que el programa es para uso propio, así que en principio el tema de la entrada no debería ser mayor problema que concienciarte tu mismo de como funciona tu programa. Si por otor lado, necesitases que lo utilizase más gente, hay dos opciones:

a) Recalcar que el uso del programa es ESE y que de otra forma va a fallar.

b) leer como una cadena de caracteres ( "9x^4 -100 = 0" ) y luego, de la cadena, pasar a la forma vectorial.
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #4 en: 2 Abril 2011, 20:11 pm »

Gracias!
Es para uso propio el programa si, porq me da verguenza darselo a un amigo, pero quiero igual saber como formar la ecuacion formal porq tal vez si hago la version 2 vendra con cosas para la otra matematica q hemos aprendido las Demostraciones por Inducion Completa, no se si sabes de eso, o te acuerdas, y ahi necesitare comparar terminos y la mejor forma seria hacer las cuentas, si no entiendes de q te hablo ni te preocupes.

Por ahora mi programa resuelve hasta 2do grado solamente, y un procedimiento indica si es completa o incompleta la ecuacion y de q forma es incompleta en el caso de la de 2do grado, asique eso ya lo tengo solucionado aunque talvez cuando lo haga para otros grados se me complicara pero vere.

Solo quisiera q me digas unas cositas de lo q dijiste:

1- Un vector es un array no? perdon por la pregunta estupida xD pero es por las dudas..
2- Dices q puedo multiplicar 4 * (x^2) en el lenguaje q programo? eso daria 4x^2 ?

edit: Ahora creo q entendi lo q me decias, y es solo para cuando estan formadas :/
Yo pensaba q cuando pusiste 3x^3 +2x^2 -x -4 = 0 --> 3, 2, -1, -4 (x^3, x^2, x^1, x^0). q hacias algo con lo q esta entre parentesis.
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #5 en: 2 Abril 2011, 20:24 pm »

No, lo que está en paréntesis en :
Citar
3x^3 +2x^2 -x -4 = 0 --> 3, 2, -1, -4 (x^3, x^2, x^1, x^0)
Era para indicar el grado de cada miembro.

Por otro lado, no me he fijado en que lenguaje programas, tampoco, digamos, me "importa". Te estoy hablando de detalles algorítmicos, de planteamiento. La implementación es cosa tuya

Vector --> array, si. Yo estoy acostumbrado a usar vector en vez de array, pero se ve que según la zona se usa más array que vector.

Sobre el tema de 4*(x^2), o x^(lo que sea), esto es tan simple como procesar la ecuación del final al principio (de términos de menor grado a mayor) de forma que en cada iteración incrementes el grado de la x multiplicándola. CUIDADO CON ESTO:

primera iteración: x^1 (cálculos etc etc etc) x= x*x --> x^2

segunda iteración: x^2 (cálculos etc etc etc) x= x*x --> x^4!!!!!!

tercera iteración x^3, pero resulta que tenemos x^4 (cálculos etc etc etc) x= x*x --> x^8 Y el error sigue y sigue
 
Has de llevar un control sobre eso. Con una variable auxiliar en la que guardes la x^a lo que sea, de forma que nunca pierdes el valor original de la x (o al revés, que en la auxiliar guardes la x, y en x original la potencia)
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #6 en: 2 Abril 2011, 20:48 pm »

Mmmm no te entiendo mucho, en si lo q pido es q me digan como podria hacer una funcion que haga esto:

Código:
2x-4(3x+7-2x)+5=0   ---> entrada

2x-4(1x+7)+5=0

2x-4x-28+5=0

2x-4x-23=0

-2x-23=0   ---> salida

-----------------------

4x-7x(3+2(5x-6)-8)-5+10x=0   ---> entrada

4x-7x(3+10x-12-8)-5+10x=0

4x-21x-70x^2+84x+56-5+10x=0

4x-21x-70x^2+84x+51+10x=0

-17x-70x^2+94x+51=0

-70x^2+77x+51=0   ---> salida

Ahi dejo 2 ejemplos q los hice mentalmente aca asique puede q esten mal, pero es para mostrar la idea por lo menos.
Esque pienso q estas pensando mas "avanzado" Akai y talvez es algo mas simple lo q pido
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #7 en: 2 Abril 2011, 21:21 pm »

Vale, entendí el problema MAL desde el principio.

Visto eso, lo primero que se me ocurre, es:

Lees como cadena de caracteres.

Cuando detectes un paréntesis, copias (por ejemplo), en otra cadena, desde el siguiente símbolo al que abre paréntesis ' ( ' hasta el anterior al que cierra el paréntesis ' ) ' Y procesas esa parte (la simplificas (ahora explicaré el proceso de simplificar)). Una vez tienes la cadena sin paréntesis y con los términos que lo estaban multiplicados y demás, simplificas esa cadena,

Simplificar: una idea puede ser declarar un vector de (por ejemplo) 10 posiciones. Asumiendo entonces que tu programa podrá resolver desde grado 0 a grado 9.

Todas las posiciones inicializadas a 0.

Cada vez que detectes un elemento, sumas su valor al grado que corresponda(detectas un número? miras adelante para ver el grado ). Si detectas un igual, a partir del igual, todo irá con el signo cambiado.

Ejemplo:
ecuación muestra lo que queda por delante de la posición actual del indice de la cadena
inicio:
vector= 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

ecuación: -3x +4x^3 -5x^4 -2x^2 +x -4 = 5


primera iteración:

vector= 0, 0, 0, 0, 0, 0, 0, 0, -3, 0

ecuación: 4x^3 -5x^4 -2x^2 +x -4 = 5


segunda iteración:

vector= 0, 0, 0, 0, 0, 0, 4, 0, -3, 0

ecuación: -5x^4 -2x^2 +x -4 = 5


tercera iteración:

vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, 0

ecuación: -2x^2 +x -4 = 5


cuarta iteración:

vector= 0, 0, 0, 0, 0, -5, 4, -2, -2, 0 // +1 a x con grado 1

ecuación: -4 = 5


quinta iteración:

vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -4

ecuación: = 5


sexta iteración:

vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 // -4 -5 ya que tomamos el 5 como negativo

ecuación: vacia

Ahora supongamos que en realidad esta ecuación estaba dentro de un paréntesis. En ese caso, multiplicamos cada elemento del vector por dicho valor (si aumenta el grado de la x, se desplazan los elementos una posición en el vector).

Por ejemplo:
7 ( lo anterior) multiplicamos todos por 7.
7x (lo anterior) multiplicamos todos por 7, y los movemos para aumentar el grado

Para el vector anterior, el caso con 7x quedaría algo así:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 //antes
vector= 0, 0, 0, 0, -35, 28, 0, -21, -63, 0 //después

Espero haber ayudado.
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #8 en: 2 Abril 2011, 22:53 pm »

Gracias Akai! se me han ocurrido varias ideas, intentare y luego te digo como me fue, aunque durare 2 dias mas o menos xD
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Como formo lo ecuacion completa?
« Respuesta #9 en: 3 Abril 2011, 18:29 pm »

Bueno no he ni empezado si quiera, se me hace dificil pensarlo, pero es una lastima porq el programa esta de 10, esta bien organizado y bien codeado pienso, y solo me falta esta parte q seria lo mas dificil, desp lo otro ya lo hace todo y hara mas cosas. Tengo hasta junio para hacerlo porq me gustaria estudiar con el para las pruebas semestrales q tengo.
Asique necesito ayuda por favor, si alguien puede hacerme la funcion para formar la ecuacion bien organizada como pido, le agradezco
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como pasar a pantalla completa
Multimedia
faju 3 2,769 Último mensaje 19 Marzo 2005, 00:06 am
por faju
cómo ver SVCD en Pantalla completa en mi televisor.?
Multimedia
zean 4 3,412 Último mensaje 16 Enero 2006, 22:47 pm
por Songoku
Ruta completa del archivo, como?
PHP
Alex_bro 2 2,978 Último mensaje 11 Mayo 2007, 18:45 pm
por Alex_bro
Sacar numeros de una ecuacion? como?
.NET (C#, VB.NET, ASP)
Edu 8 6,174 Último mensaje 14 Marzo 2011, 04:07 am
por .mokk.
estoy atascado, como formo palabras?
Programación C/C++
risto 3 3,301 Último mensaje 28 Marzo 2012, 21:51 pm
por Beakman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines