// polinomios.cpp - Trabajando con polinomios
//
#include <iostream>                                                                    
#include "polinomio.h"
using namespace std;

bool IntroducirTermino(CTermino&);

int main() // función principal
{
  CPolinomio PolinomioR, PolinomioB, PolinomioA;
  CTermino tx;
  bool r;

  cout << "Términos del polinomio A\n"
       << "(para finalizar introduzca 0 para el\n"
       << "coeficiente y para los exponentes):\n\n";
  r = IntroducirTermino(tx);
  while (r)
  {
    PolinomioA.AsignarTermino(tx); // duplica tx
    r = IntroducirTermino(tx);
  }

  cout << "Términos del polinomio B\n"
       << "(para finalizar introduzca 0 para el\n"
       << "coeficiente y para los exponentes):\n\n";
  r = IntroducirTermino(tx);
  while (r)
  {
    PolinomioB.AsignarTermino(tx);
    r = IntroducirTermino(tx);
  }

  // Operador + y operador de asignación por omisión
  PolinomioR = PolinomioA + PolinomioB;
  // Constructor copia
  CPolinomio Polinomio = PolinomioR;

  cout << "\nPolinomio A: "; cout << PolinomioA;
  cout << "\nPolinomio B: "; cout << PolinomioB;
  cout << "\nPolinomio R: "; cout << Polinomio;
  cout << endl;
  
  cout << "valor del polinomio para x = 5, y = 1: "
       << PolinomioR(5, 1) << endl;
  double v = PolinomioR; // valor del polinomio para x = 1 e y = 1
  cout << "valor del polinomio para x = y = 1: " << v << endl;
}

bool IntroducirTermino(CTermino& t)
{         
  float coef;
  int expx, expy;                    
  cout << "Introduce coeficiente:    "; cin >> coef;
  cout << "Introduce exponente de X: "; cin >> expx;
  cout << "Introduce exponente de Y: "; cin >> expy;
  cout << endl;
  if (!coef && !expx && !expy) return false;
  t = CTermino(coef, expx, expy);
  return true;
}

