Aqui les dejo un programa q suma, resta y deriva Polinomios de una variable:
cualquier consulta haganmela saber
class nodo
{
public:
nodo *sig;
float coef;
int expo;
public:
nodo *crea_pol(nodo *p, int n);
nodo *insertar_f(nodo *f,float coef, int expo);
void suma();
void resta();
void multiplicacion();
void division();
void derivar();
void grado_pol();
void recorre(nodo *p);
};
void main()
{
nodo *aux;
char op;
do
{
clrscr();
gotoxy(25,4);cout<<"OPERACIONES CON POLINOMIOS (1 variable)";
gotoxy(25,5);cout<<"ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ";
gotoxy(28,8);cout<<"1.-SUMA";
gotoxy(28,10);cout<<"2.-RESTA";
gotoxy(28,12);cout<<"3.-DERIVADA";
gotoxy(35,14);cout<<"ELIJA OPCION [ ]";
gotoxy(45,19);cout<<"->Presione 'ESC' para SALIR";
gotoxy(49,14);op=getch();
//cout<<"numero de terminos del polinomio";cin>>n;
switch(op)
{
case '1':aux->suma();
break;
case '2':aux->resta();
break;
case '3': aux->derivar();
break;
}
}while(op!=27);
}
void nodo::suma()
{
nodo *r,*t,*f=NULL,*p=NULL,*q=NULL;
int n;
float suma;
clrscr();
gotoxy(27,3);cout<<"SUMA DE POLINOMIOS\n\n";
cout<<"numero de terminos P(x): ";cin>>n;
p=p->crea_pol(p,n);
cout<<"numero de terminos Q(x): ";cin>>n;
q=q->crea_pol(q,n);
r=p;
t=q;
while(r!=NULL && t!=NULL)
{
if(r->expo==t->expo)
{
suma=r->coef+t->coef;
if(suma!=0)
{
f=f->insertar_f(f,suma,r->expo);
r=r->sig;
t=t->sig;
}
}
else
{
if(r->expo > t->expo)
{
f=f->insertar_f(f,r->coef,r->expo);
r=r->sig;
}
else
{
f=f->insertar_f(f,t->coef,t->expo);
t=t->sig;
}
}
}
while(r!=NULL)
{
f=f->insertar_f(f,r->coef,r->expo);
r=r->sig;
}
while(t!=NULL)
{
f=f->insertar_f(f,t->coef,t->expo);
t=t->sig;
}
cout<<"P(x)+Q(x)= ";f->recorre(f);
}
void nodo::resta()
{
nodo *r,*t,*f=NULL,*p=NULL,*q=NULL;
int n;
float resta;
clrscr();
gotoxy(27,3);cout<<"RESTA DE POLINOMIOS\n\n";
cout<<"numero de terminos P(x): ";cin>>n;
p=p->crea_pol(p,n);
cout<<"numero de terminos Q(x): ";cin>>n;
q=q->crea_pol(q,n);
r=p;
t=q;
while(r!=NULL && t!=NULL)
{
if(r->expo==t->expo)
{
resta=r->coef-t->coef;
if(resta!=0)
{
f=f->insertar_f(f,resta,r->expo);
r=r->sig;
t=t->sig;
}
}
else
{
if(r->expo > t->expo)
{
f=f->insertar_f(f,r->coef,r->expo);
r=r->sig;
}
else
{
f=f->insertar_f(f,t->coef,t->expo);
t=t->sig;
}
}
}
while(r!=NULL)
{
f=f->insertar_f(f,r->coef,r->expo);
r=r->sig;
}
while(t!=NULL)
{
f=f->insertar_f(f,t->coef,t->expo);
t=t->sig;
}
cout<<"P(x)+Q(x)= ";f->recorre(f);
}
void nodo::derivar()
{
nodo *r,*p=NULL,*f=NULL;
int n,d;
float c;
clrscr();
gotoxy(27,3);cout<<"DERIVADA DE POLINOMIOS\n\n";
cout<<"numero de terminos P(x): ";cin>>n;
p=p->crea_pol(p,n);
r=p;
while(r!=NULL)
{
c=r->coef*r->expo;
d=r->expo-1;
if(c!=0)
{
f=f->insertar_f(f,c,d);
}
r=r->sig;
}
cout<<"DERIVADA DE P(x): ";f->recorre(f);
}