Mi problema es que al hacer la suma (parece que la hace bien) también se modifica el valor del PolinomioP1 y eso no tiene que pasar ya que después tengo que hacer mas operaciones con el polinomio.
Este es el resustado de la ejecucion
PolinomioP1: +2.0x^4 +1.0x^3 +1.0x^2 -5.0x^0
Monomio: 11x^3
SumaMonomio: +2.0x^4 +12.0x^3 +1.0x^2 -5.0x^0
PolinomioP1: +2.0x^4 +12.0x^3 +1.0x^2 -5.0x^0
Código
typedef struct Celda { int grado; float coef; struct Celda * sig; } CeldaRep; typedef CeldaRep * CeldaAp; typedef void * Polinomio; Polinomio SumaMonomio(Polinomio p, int grado, float coeficiente) { CeldaAp Pol = p; CeldaAp c = p; //copia de p para recorrer los bucles; while((c->sig!=NULL) && (c->sig->grado > grado)) { Pol->coef = c->sig->coef; Pol->grado = c->sig->grado; //Pol->sig->sig = c->sig->sig; c = c->sig; Pol=Pol->sig; //printf("%1.1fx^%i \n",Pol->sig->coef,Pol->sig->grado); } if ((c->sig!=NULL)&&(c->sig->grado==grado)) { Pol->sig->coef = c->sig->coef + coeficiente; if (Pol->sig->coef == 0) { CeldaAp aux = Pol->sig; Pol->sig = Pol->sig->sig; } } else { //crear los if por si no hay memoria aux->coef = coeficiente; aux->grado = grado; aux->sig = Pol->sig; Pol->sig = aux; } return Pol; }
Alguien me podría ayudar
Gracias, saludos.