Operaciones con Polinomios - C++


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);
}

2 comentarios:

{ Nicolas Ramirez } at: 8 de mayo de 2014, 11:18 dijo...

Que librerías usaste?

{ Ludwig limache mayta } at: 21 de mayo de 2015, 21:16 dijo...

podrias definir las demas funciones

Publicar un comentario en la entrada