Parece un poco problemático la cosa, bueno te voy a dar tips más "sólidos" (no tanto)
Primero para generar un número al azar se usa la función "rand". Puedes ver su uso aquí:
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
Para poder usarla debes colocar un
#include <stdlib.h> o algo parecido (según como lo acepte el C++ Builder)
Primero empiezas pidiendo al usuario 2 valores de tipo int "grado1" y "grado2"
Puedes hacerlo con printf scanf (necesitarias #include <stdio.h) ej:
Seguido de esto creas 2 arrays de tipo int (no trabajan con decimales supongo)
Código C++:
Ver originalint polinomio1[grado1+1], polinomio2[grado2+1];
Aquí está el tip, por ejemplo si grado1 = 3 significa que es de la forma
ax^3 + bx^2 + cx + d
Por lo tanto sería polinomio1[4]; //de 4 elementos por ej (de polinomio1[0] .. polinomio1[3])
En donde
polinomio1[3] = valor de a (ya que el "3" indicaria que lo acompaña el x^3)
polinomio1[2] = valor de b (ya que el "2" indicaria que lo acompaña el x^2)
polinomio1[1] = valor de c (ya que el "1" indicaria que lo acompaña el x^1)
polinomio1[0] = valor de d (ya que el "0" indicaria que lo acompaña el x^0)
Espero lo entiendas, entonces puedes hacer un for para rellenar el array, por ej:
Código C++:
Ver originalsrand ((unsigned) time(NULL
) ); //Si te da error quita el unsigned for(int i = 0; i < grado1+1; i++)
polinomio1
[i
] = rand()%19-9;
Eso del srand se coloca porque creo que lo hace más al "azar", ya que rand es un pseudo-random (calculado por fórmula creo más que por azar)
rand()%19 indicaría un número al azar entre 0 y 18 y con -9 seria entre -9 y 9
Y de la misma forma llenas polinomio2
Quedaría la parte de multiplicar
aquí podría complicar, lo que tendrías que hacer sería encontrar como multiplicar por coef sin importar el grado (Podría haber una "fórmula" similar para todas).
Espero te sirva, Saludos.
Actualizado:
Imaginemos esto:
usuario ingresa grado1 = 3 grado2 = 2, crea polinomio1[4] polinomio2[3]
Sabemos que un polinomio se multiplica término por término, así que por ej
(4x^3 + 3x^2 + 2x + 1) * (3x^2 + 2x + 1)
Sería 4 *3 + 4 *2 + 4 * 1 + 3 *3 + 3*2 + ...... Y así hasta el último termino.
Por lo tanto esta sería una posible solución para sumar:
Código C++:
Ver original//pos = posicion ter = termino
//Polinomio donde termino mayor es un x^(grado1 + grado2)
int polinomioResultante [grado1 + grado2 + 1];
//Iniciamos como 0 los valores del polinomio resultante
for (int c = 0; c < grado1 + grado2 + 1; c++)
polinomioResultante[c] = 0;
//Por cada termino del polinomio1
for (int pos = 0; pos < grado1 + 1; pos++){
//Vamos a multiplicar cada termino del polinomio2
for (int ter = 0; ter < grado2 + 1; ter++){
//Voy a explicar luego del código
polinomioResultante[pos + ter] += polinomio1[pos] * polinomio2[ter];
}
}
Vamos a explicar: imagina que tenemos el polinomio 3x^2 + 2x + 1 y 4x + 5
El polinomio resultante seria este: 3x^2 * 4x + 3x^2*5 + 2x*4x + 2x*5 + 1*4x + 1 *5
Es decir: 12 x^3 + 15 x^2 + 8x^2 + 10 x + 4x + 5
Mas resumido: 12 x^3 + 23 x^2 + 14x + 5
...........
tomando grado1 = 2 grado2 = 1 pResultante[4] de 0 .. 3
Empieza el for de pos = 0; ter = 0;
eso equivale a pResul[0] = 1 * 5 = 5; el 0 ya que el resultado es x^0
ter = 1 -> pResul[1] = 1 * 4 = 4; (a 4x) el 1 es un x^1 que esta correcto
(Solo son 2 terminos, asi que paso a pos = 1)
ter = 0; pResul[1] = 2 *5 = 10; (a 10x) y se le suma pResul[1] de antes o sea 10 + 4 (14 x) Si miras el resultado esta correcto
ter = 1; pResul[2] = 2 *4 = 8; (a 8x^2)
(pos = 2)
ter = 0; pResul[2] = 3 * 5 = 15; se le suma pResul[2] de antes 8 + 15 = 23 (23x) que está correcto.
ter = 1 pResul[3] = 3 * 4 = 12; ( a 12 x^3)
Y listo!!!
Ahora solo mostramos El resultado:
(De la misma forma podrias mostrar los otros 2 polinomios)
Código C++:
Ver original//Si no es x >= 0 es x>0 solamente
for (int x = grado1 + grado2; x >= 0; x--){
printf(" %dx^%d", pResul
[x
], x
); //Para que no aparezca un + luego del último término
if (x != 0)
}