Buenas, se supone que tengo que hacer un algoritmo divide y venceras que multiplique dos polinomios de grado n, lo he hecho yo, por tanto no se si la semantica estara bien. El caso esque no me compila, y esque soy nuevo porgramando en C y lo tengo muy verde. Aqui os dejo el codigo a ver si le podeis echar un vistazo.
//Multiplicacion de polinomios con divide y venceras
int* MultiPoli(int* p, int n, int* q, int m);
int* MultiPoli(int* p, int n, int* q, int m){
int* P;
int* Pi;
int* Pd;
int* Q;
int* Qi;
int* Qd;
int* Ri;
int* Rd;
int* Rh;
int* Sp;
int* Sq;
int* f;
int* g;
int* h;
int* j;
int x=0;
int y=0;
int i,N,M;
if(n>m){ //El vector mas grande es P
P=p;
Q=q;
N=n+1;
M=m+1;
}
else{
Q=p;
P=q;
N=m+1;
M=n+1;
}
if(M==1){ //Multiplicación Convencional. Caso Base
return (P[0]*Q[0]);
}
else{
for(i=0;i<(N/2)-1;i++){ //Parte Izquierda 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 Izquierda de Q
Qi[i]=Q[i];
}
for(i=M/2;i<M;i++){ //Parte Derecha de Q
Qd[i]=P[i];
}
Ri=MultiPoli(Pi,N/2,Qi,M/2); //Llamada recursiva
Rd=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];
}
Rh=MultiPoli(Sp,N/2,Sq,M/2); //Llamada recursiva
for (i=0;i<(N/2)-1;i++){ // Rh+Ri+Rd
f[i]=Rh[i]-Ri[i]-Rd[i];
}
for (i=0;i<(N/2)-1;i++){ // 1.-(Rh+Ri+Rd)*Xn/2
g[i]=0;
}
for (i=N/2;i<N;i++){ // 2.-(Rh+Ri+Rd)*Xn/2
g[N/2]=f[x];
x++;
}
for (i=0;i<N-1;i++){ // 1.-Rd*Xn
h[i]=0;
}
for (i=N;i<2N;i++){ // 2.-Rd*Xn
h[N]=Rd[y];
y++;
}
for(i=0;i<2N;i++){ // Calculo la solucion
j[i]=Ri[i]+g[i]+h[i];
}
return j;
}//Fin else
}//Fin metodo
Gracias y Salu2