Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/11/2012, 18:48
Avatar de cotolon
cotolon
 
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 12 años
Puntos: 10
Respuesta: Multiplicacion de polinomios en c++ builder

Voy a suponer que no han trabajado con funciones para no complicarte la vida. Ya que el código no es muy largo lo mandaré por acá:

(Yo uso Code::Blocks y no C++ Builder, así que tu tendrías que arreglar si te da error la sintaxis)

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <time.h>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.     int grado1, grado2;
  12.     //Ingresamos los grados de los 2 polinomios
  13.     printf("Ingresa grados de los 2 polinomios. Ej: 4 3\n");
  14.     scanf("%d %d", &grado1, &grado2);
  15.  
  16.     //Creamos los polinomios de grado + 1
  17.     int polinomio1[grado1 + 1], polinomio2[grado2 + 1];
  18.  
  19.     //Iniciamos rand al azar
  20.     srand ((unsigned) time(NULL) );
  21.  
  22.     //Llenamos los 2 polinomios
  23.     for(int i = 0; i < grado1+1; i++){
  24.         //Valores entre -9 y 9
  25.         do{
  26.         //Elige al azar mientras polinomio1 es 0, deja de hacerlo si es distinto
  27.         polinomio1[i] = rand()%19-9;}while(polinomio1[i]==0);
  28.     }
  29.     for(int i = 0; i < grado2+1; i++){
  30.         do{
  31.         polinomio2[i] = rand()%19-9;}while(polinomio2[i]==0);
  32.     }
  33.  
  34.     //Mostramos polinomio1:
  35.     printf("(");
  36.     for (int x = grado1; x >= 0; x--){
  37.      //Dibujamos los x^2 o mayor
  38.      if (x > 1)
  39.         printf(" %dx^%d ", polinomio1[x], x );
  40.      //Si es 1 dibujamos solamente "x"
  41.      else if (x == 1) printf(" %dx ", polinomio1[x] );
  42.      //Y si es 0 no dibujamos la "x"
  43.      else if (x == 0) printf(" %d ", polinomio1[x] );
  44.      //Para que no se dibuje un + luego del último termino
  45.      if (x != 0)
  46.      printf(" + ");
  47.     }
  48.     printf(") * (");
  49.  
  50.     //Mostramos polinomio2
  51.     for (int x = grado2; x >= 0; x--){
  52.      if (x > 1)
  53.         printf(" %dx^%d ", polinomio2[x], x );
  54.      else if (x == 1) printf(" %dx ", polinomio2[x] );
  55.      else if (x == 0) printf(" %d ", polinomio2[x] );
  56.      if (x != 0)
  57.      printf(" + ");
  58.     }
  59.     printf(")");
  60.  
  61.     //Termino mayor del polinomio Resultante es  x^(grado1+grado2)
  62.     int polinomioResultante [grado1 + grado2 + 1];
  63.  
  64.     //Iniciamos como 0 los valores del polinomio resultante
  65.     for (int c = 0; c < grado1 + grado2 + 1; c++)
  66.         polinomioResultante[c] = 0;
  67.  
  68.     //Por cada termino del polinomio1
  69.     for (int pos = 0; pos < grado1 + 1; pos++)
  70.     //Vamos a multiplicar cada termino del polinomio2
  71.         for (int ter = 0; ter < grado2 + 1; ter++){
  72.             //pos + ter = x ^ (pos + ter)
  73.             polinomioResultante[pos + ter] += polinomio1[pos] * polinomio2[ter];
  74.         }
  75.  
  76.  
  77.     //Mostramos el Polinomio Resultante:
  78.     printf("\n\nPolinomio Resultante: \n\n");
  79.     for (int x = grado1+grado2; x >= 0; x--){
  80.      if (x > 1)
  81.         printf(" %dx^%d ", polinomioResultante[x], x );
  82.      else if (x == 1) printf(" %dx ", polinomioResultante[x] );
  83.      else if (x == 0) printf(" %d ", polinomioResultante[x] );
  84.      if (x != 0)
  85.      printf(" + ");
  86.     }
  87.  
  88.  
  89.  
  90.  
  91.     getche();
  92.     return 0;
  93. }