Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/02/2010, 09:18
Avatar de genuine_carlosV2
genuine_carlosV2
 
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 16 años
Puntos: 6
Respuesta: [C++] - Multiplicar monomios

Buenas,

Lo quería programar pero no tengo tiempo, te comento lo que haría:
Un monomio se compone, como bien sabes de una variable y un número. En esencia, multiplicar estas dos cosas hace:
1) La variable: Aumenta el grado del monomio
2) El número: Aumenta el coeficiente del monomio

Entonces, para programar algo así, yo empezaría con un array donde colocaría el primer monomio (si quieres al inicio del array, al inicio, sino, al final. Lo único que cambia de hacerlo de una manera u otra es el orden de lectura).
Por ejemplo, si quieres multiplicar (x-2)·(x+3)·(x-4), empieza con un array así:
Código:
+---+---+---+---+
|-2 | 1 | 0 | 0 |
+---+---+---+---+
  I   1   2   3
Como ves, eso corresponde al primer monomio (donde I coresponde al término independiente y 1, 2 y 3 al grado de la x).

Ahora, para multiplicarlo por el siguiente monomio, tan solo tienes que añadirle las multiplicaciones oportunas (puedes hacer una copia del array para tener los coeficiente a mano). Mira, te pongo las operaciones:
Código:
  +---+---+---+---+
  |-2 | 1 | 0 | 0 | ( x - 2 )
  +---+---+---+---+
        · ( x + 3 )
-------------------
  +---+---+---+---+
  |-6 | 3 | 0 | 0 | ( x - 2 ) · 3
  +---+---+---+---+
  +---+---+---+---+
+ | 0 |-2 | 1 | 0 | ( x - 2 ) · x
  +---+---+---+---+
-------------------
  +---+---+---+---+
  |-6 | 1 | 1 | 0 | ( x - 2 ) · ( x + 3 )
  +---+---+---+---+
        · ( x - 4 )
-------------------
  +---+---+---+---+
  |24 |-4 |-4 | 0 | ( x - 2 ) · ( x + 3 ) · -4
  +---+---+---+---+
  +---+---+---+---+
  | 0 |-6 | 1 | 1 | ( x - 2 ) · ( x + 3 ) · x
  +---+---+---+---+
-------------------
  +---+---+---+---+
  |24 |-10|-3 | 1 | ( x - 2 ) · ( x + 3 ) · ( x - 4 ) = x³-3x²-10x+24
  +---+---+---+---+
Se entiende? Es muy sencillo.

P.D.: No hace falta que cree dos arrays para cada operación, si te lo montas un poco bien, puedes ir añadiendo los valores dinámicamente.

Un saludo, suerte y ya me dirás que tal te fué
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM