Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda por favor

Estas en el tema de ayuda por favor en el foro de C/C++ en Foros del Web. Hola, soy nuevo usando el lenguaje C y tengo que hacer un programa que multiplique dos polinomios usando un algoritmo divide y venceras. Por favor ...
  #1 (permalink)  
Antiguo 15/03/2007, 08:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 1 mes
Puntos: 0
ayuda por favor

Hola, soy nuevo usando el lenguaje C y tengo que hacer un programa que multiplique dos polinomios usando un algoritmo divide y venceras. Por favor que alguien me ayude, que llevo dos semanas intentandolo y no encuentro solucion. Gracias
  #2 (permalink)  
Antiguo 15/03/2007, 09:31
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: ayuda por favor

¿Por que no hablas de lo que has intentado? o ¿Publicas lo que has hecho? asi es mas probable que alguien se anine a ayudarte ¿no crees?

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 15/03/2007, 14:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: ayuda por favor

He intentado dividir los polinomios en 2, llamar recursivamente para multiplicar esas dos partes, y despues sumarlas y volver a llamar recursivamente para multiplicar el resultado. Es el mismo metodo que se usa para multiplicar enteros largos usando divide y venceras.
Aqui les dejo el codigo:

int* MultiPoli(int* p, int n, int* q, int m){

int* P;
int* Y;
int* Pi;
int* Pd;
int* Qi;
int* Qd;
int* U;
int* Z;

int* Sp;
int* Sq;
int* f;

int* j;
int x=0;
int y=0;
int i,N,M;



if (m==1)
return (int *)(p[0]*q[0]);
else {

for(i=0;i<=((n/2)-1);i++){ //Parte IzquieZa de P
Pi[i]=p[i];
}


for(i=n/2;i<n;i++){ //Parte Derecha de P
Pd[i]=p[i];
}

for(i=0;i<=((m/2)-1);i++){ //Parte IzquieZa de Q
Qi[i]=q[i];
}

for(i=m/2;i<m;i++){ //Parte Derecha de Q
Qd[i]=q[i];
}

U=MultiPoli(Pi,n/2,Qi,m/2); //Llamada recursiva
Z=MultiPoli(Pd,n/2,Qd,m/2); //Llamada recursiva

for(i=0;i<=((n/2)-1);i++){ // Pi+Pd
Sp[i]=Pi[i]+Pd[i];
}

for(i=0;i<=((m/2)-1);i++){ // Qi+Qd
Sq[i]=Qi[i]+Qd[i];
}

Y=MultiPoli(Sp,n/2,Sq,m/2); //Llamada recursiva

for (i=0;i<=((n/2)-1);i++){ // Y-U-Z
f[i]=Y[i]-U[i]-Z[i];
}

for(i=0;i<2*n;i++){ // Calculo la solucion
j[i]=U[i]+f[i]+Z[i];
}

return j;

}//Fin else
}//Fin metodo

Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:35.