#ifndef POLI_H
#define POLI_H

#include <iostream>
#include <cstdlib>
#include <string>
#include "Term.hpp"

class Poli {
	private:
		void DelTerms(void);
		Term* lid;

	public:
		Poli();
		Poli(const Poli& p);
		Poli(double co, int ex);
		~Poli(void);
		Term* Lid() const { return lid; };
		int Gr() const;
		Poli& operator += (Term t);
		Poli& operator -= (Term t);
		Poli& operator = (const Poli& p);
		std::ostream& Print(std::ostream&) const;
		std::istream& Read(std::istream&);
};


Poli operator + (const Poli& p, const Poli& q);
Poli operator - (const Poli& p, const Poli& q);
Poli operator - (const Poli& q);
Poli operator * (const Poli& p, const Poli& q);
Poli operator / (const Poli& p, const Poli& q);
Poli operator % (const Poli& p, const Poli& q);

std::ostream& operator << (std::ostream& os, const Poli& p);
std::istream& operator >> (std::istream& is, Poli& p);

#endif

