Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // principalele operatii pentru polinoame sunt
- /*
- -> adaugarea unei termen (monom)
- -> atribuirea unui polinom atltui polinom
- -> * cu o constanta
- -> ordonarea monoamelor dupa grad
- -> suma a doua polinoame
- -> diferenta a doua polinoame
- -> produsul a doua polinoame
- */
- class Monom
- {
- int grad;
- double coef;
- public:
- Monom();
- Monom(int grad, double coef);
- Monom& operator=(Monom& monom);
- Monom& operator+(Monom& monom);
- Monom& operator-(Monom& monom);
- Monom& operator*(double constanta);
- Monom& operator*(Monom& monom);
- int GetGrad();
- double GetCoeficient();
- };
- class Polinom
- {
- int nrMonoame;
- Monom data[50];
- public:
- Polinom();
- void AddMonom(Monom m);
- void DeleteMonom(Monom m);
- Polinom& operator=(Polinom& polinom);
- void MultiplicaCuOConstanta(double constanta);
- Polinom& operator+(Polinom& p);
- Polinom& operator-(Polinom& p);
- Polinom& operator*(Polinom& p);
- void Sort();
- };
- Monom::Monom() {}
- Monom::Monom(int grad, double coef)
- {
- this->coef = coef;
- this->grad = grad;
- }
- Monom& Monom::operator=(Monom& monom)
- {
- if (this != &monom)
- return;
- grad = monom.grad;
- coef = monom.coef;
- }
- double Monom::GetCoeficient()
- {
- return coef;
- }
- int Monom::GetGrad()
- {
- return grad;
- }
- Monom& Monom::operator+(Monom& monom)
- {
- coef += monom.coef;
- return *this;
- }
- Monom& Monom::operator-(Monom& monom)
- {
- coef -= monom.coef;
- return *this;
- }
- Monom& Monom::operator*(double constatanta)
- {
- coef *= constatanta;
- }
- Polinom::Polinom()
- {
- nrMonoame = 0;
- }
- void Polinom::AddMonom(Monom monom)
- {
- bool found = false;
- for (int i = 0; i < nrMonoame && !found; i++)
- {
- if (data[i].GetGrad() == monom.GetGrad())
- {
- data[i] = data[i] + monom;
- found = true;
- }
- }
- if (!found)
- {
- data[++nrMonoame] = monom;
- }
- }
- void Polinom::DeleteMonom(Monom monom)
- {
- for (int i = 0; i < nrMonoame; i++)
- {
- if (data[i].GetGrad() == monom.GetGrad() && data[i].GetCoeficient() == monom.GetGrad())
- {
- data[i] = data[nrMonoame - 1];
- nrMonoame--;
- break;
- }
- }
- }
- Polinom& Polinom::operator=(Polinom& polinom)
- {
- if (this != &polinom)
- return*this;
- if (nrMonoame == polinom.nrMonoame)
- {
- for (int i = 0; i < nrMonoame; i++)
- {
- data[i] = polinom.data[i];
- }
- }
- return *this;
- }
- void Polinom::MultiplicaCuOConstanta(double constanta)
- {
- if (constanta == 0)
- {
- nrMonoame = 0;
- }
- else
- {
- for (int i = 0; i < nrMonoame; i++)
- {
- data[i] = data[i] * constanta;
- }
- }
- }
- Polinom& Polinom::operator+(Polinom& polinom)
- {
- Polinom temp = *this;
- for (int i = 0; i < nrMonoame; i++)
- {
- temp.AddMonom(polinom.data[i]);
- }
- return temp;
- }
- Polinom& Polinom::operator-(Polinom& polinom)
- {
- polinom.MultiplicaCuOConstanta(-1);
- for (int i = 0; i < nrMonoame; i++)
- {
- AddMonom(polinom.data[i]);
- }
- return *this;
- }
- Polinom& Polinom::operator*(Polinom& polinom)
- {
- Polinom temp = *this;
- for (int i = 0; i < nrMonoame; i++)
- {
- for (int j = 0; j < polinom.nrMonoame; j++)
- {
- int grad = data[i].GetGrad() + polinom.data[j].GetGrad();
- double coef = data[i].GetCoeficient() * polinom.data[j].GetCoeficient();
- Monom monom(grad, coef);
- temp.AddMonom(monom);
- }
- }
- return temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement