Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Hedder.h"
- Vec::Vec(){
- }
- Vec::~Vec(){
- a.clear();
- }
- void Vec::insert(Polynom x){
- a.push_back(x);
- }
- void Vec::erasee(int x){
- a.erase(a.begin() + x);
- }
- void Vec::reversee(std::vector<Polynom> a){
- reverse(a.begin(), a.end());
- }
- void input(Polynom a, string s, Arr n){
- cin >> s;
- cin >> a;
- n.s = s;
- n.a = a;
- }
- //Polynom Vec::&operator[](int x){
- // return a[x];
- //}
- Polynom::Polynom()
- {
- try{
- koef = NULL;
- }
- catch(int a){
- cout << "no memory";
- }
- }
- Polynom::~Polynom()
- {
- try{
- delete[]koef;
- }
- catch(int a){
- cout << "no polynom";
- }
- }
- Polynom::Polynom(int an)
- {
- try{
- int i;
- n = an;
- koef = new double[n + 1];
- for (i = 0; i <= n; i++)
- {
- koef[i] = 0;
- }
- }
- catch(int a){
- cout << "no memory";
- }
- }
- Polynom::Polynom(const Polynom &f)
- {
- try{
- n = f.n;
- koef = new double[n + 1];
- for (int i = 0; i <= n; i++)
- koef[i] = f.koef[i];
- }
- catch(int a){
- cout << "no memory";
- }
- }
- int Polynom::getn()
- {
- return n;
- }
- double Polynom::getkoef(int i)
- {
- try{
- if (i <= n)
- return koef[i];
- else
- return 0.0;
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- double Polynom::sum(){
- try{
- int ans = 0;
- for(int i = 0; i <= n; i++){
- ans += koef[i];
- }
- return ans;
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- Polynom Polynom::operator-(const Polynom &t) //оператор вычитания А-В
- {
- try{
- int i;
- if (n >= t.n)//А>B
- {
- Polynom Z = *this;
- for (i = 0; i <= t.n; i++)
- Z.koef[i] = koef[i] - t.koef[i];
- return Z;
- }
- else//B>A
- {
- Polynom Z(t.n);
- for (i = 0; i <= n; i++)
- Z.koef[i] = -t.koef[i] + koef[i];
- for (i = n + 1; i <= t.n; i++)
- Z.koef[i] = -t.koef[i];
- return Z;
- }
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- Polynom Polynom::operator+(const Polynom &t)//оператор сложения A+B
- {
- try{
- int i;
- if (n >= t.n)//A>B
- {
- Polynom Z=*this;
- for (i = 0; i <= n; i++)
- Z.koef[i] = koef[i] + t.koef[i];
- return Z;
- }
- else//A<B
- {
- Polynom Z=t;
- for (i = 0; i <= n; i++)
- Z.koef[i] = t.koef[i] + koef[i];
- return Z;
- }
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- Polynom Polynom::operator*(const Polynom &t)//оператор умножения А*В
- {
- try{
- int i,j;
- Polynom Y(n+t.n);
- for (i = 0; i <= n; i++)
- for (j = 0; j <= t.n; j++)
- Y.koef[i + j] += koef[i]*t.koef[j];
- return Y;
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- Polynom Polynom::operator = (const Polynom &t)
- {
- try{
- if(this!=&t)
- {
- delete[] koef;
- n = t.n;
- koef = new double[n + 1];
- for (int i = 0; i <= n; i++)
- koef[i] = t.koef[i];
- }
- return *this;
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- istream &operator>>(istream &s, Polynom &c)// перегруженный оператор ввода
- {
- int i;
- for (i = 0; i <= c.n; i++)
- {
- s >> c.koef[i];
- }
- return s;
- }
- ostream &operator<<(ostream &s, const Polynom &c)
- {
- int i, n=0;
- for (i = 0; i <= c.n; i++)
- {
- if (c.koef[i] != 0)
- n++;
- }
- if (n != 0)
- {
- if (c.koef[0] != 0)
- {
- s << c.koef[0];
- }
- for (i = 1; i <= c.n; i++)
- {
- if (c.koef[i] < 0)
- {
- if(c.koef[i]!=-1)
- s << c.koef[i] << "X^" << i;
- else
- s << "-" << "X^" << i;
- }
- else
- {
- if (c.koef[i] != 0)
- {
- if(c.koef[i] != 1)
- s << "+" << c.koef[i] << "X^" << i;
- else
- s<< "+" << "X^" << i;
- }
- }
- }
- s << '\n';
- }
- else
- {
- s << 0;
- }
- return s;
- }
- Arr::Arr()
- {
- try{
- a.koef = NULL;
- string s;
- }
- catch(int a){
- cout << "no memory";
- }
- }
- Arr::Arr(int an)
- {
- try{
- string s;
- int i;
- n = an;
- a.koef = new double[n + 1];
- for (i = 0; i <= n; i++)
- {
- a.koef[i] = 0;
- }
- }
- catch(int a){
- cout << "no memory";
- }
- }
- Arr::~Arr()
- {
- try{
- delete []a.koef;
- s.clear();
- }
- catch(int a){
- cout << "no poly";
- }
- }
- istream &operator>>(istream &s, Arr &c)// перегруженный оператор ввода
- {
- s >> c.s;
- s >> c.a;
- // return c;
- return s;
- }
- ostream &operator<<(ostream &na, const Arr &c)
- {
- na << c.s << endl;
- int i, n=0;
- for (i = 0; i <= c.a.n; i++)
- {
- if (c.a.koef[i] != 0)
- n++;
- }
- if (n != 0)
- {
- if (c.a.koef[0] != 0)
- {
- na << c.a.koef[0];
- }
- for (i = 1; i <= c.a.n; i++)
- {
- if (c.a.koef[i] < 0)
- {
- if(c.a.koef[i]!=-1)
- na << c.a.koef[i] << "X^" << i;
- else
- na << "-" << "X^" << i;
- }
- else
- {
- if (c.a.koef[i] != 0)
- {
- if(c.a.koef[i] != 1)
- na << "+" << c.a.koef[i] << "X^" << i;
- else
- na<< "+" << "X^" << i;
- }
- }
- }
- na << '\n';
- }
- //
- else
- {
- na << 0;
- }
- return na;
- }
- double Arr::sum(){
- try{
- int ans = 0;
- for(int i = 0; i <= n; i++){
- ans += a.koef[i];
- }
- return ans;
- }
- catch(int a){
- cout << "error";
- return a;
- }
- }
- int Arr::size(){
- return s.size();
- }
- Polynom Arr::operator+(const Arr &t)//оператор сложения A+B
- {
- return (this->a + t.a);
- }
- Polynom Arr::operator-(const Arr &t)//оператор вычитания A-B
- {
- return (this->a - t.a);
- }
- Polynom Arr::operator*(const Arr &t)//оператор умножения A*B
- {
- return (this->a * t.a);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement