Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // lol4to.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class Polynomial
- {
- private:
- double *coef; // массив коэффициентов
- int n; // степень полинома
- public:
- Polynomial(): n(-1), coef (NULL) {}; // пустой конструктор для инициализации
- //экземпляров и массивов экземпляров класса по умолчанию
- Polynomial(double c);
- Polynomial(int s, double* noef);
- // копирующий конструктор
- Polynomial( const Polynomial & p );
- ~Polynomial();
- //инициализация
- void Init (const int n_, double * coef_ );
- // перваая производная полинома
- Polynomial operator ~ ();
- //оператор присваивания
- Polynomial & operator = ( const Polynomial & p );
- // ввод экземпляров класса из входного потока
- friend istream & operator >> ( istream & in, Polynomial & p );
- // вывод в выходной поток
- friend ostream & operator << ( ostream & out, const Polynomial & p );
- };
- // копирующий конструктор
- Polynomial::Polynomial( const Polynomial & p )
- {
- coef = NULL; //помечаем как непроинициализированный
- Init( p.n, p.coef ); //инициализируем данными входящего класса
- }
- Polynomial::Polynomial(double c): n(0) //инициализация одним числом
- {
- coef = new double [1];
- coef[0] = c;
- }
- Polynomial::Polynomial(int s, double* noef)
- {
- coef = NULL;
- Init (s, noef);
- }
- Polynomial::~Polynomial()
- {
- if (coef!=NULL) delete [] coef; //очищаем память
- }
- // функция инициализации
- void Polynomial::Init(const int n_, double * coef_)
- {
- n = n_;
- if (coef!=NULL)
- delete [] coef; //удаляем, если что-то уже есть
- coef = new double [n+1]; //выделяем память
- memcpy( coef, coef_, (n+1)*sizeof(double) ); //копируем данные
- }
- // перваая производная полинома
- Polynomial Polynomial::operator ~ ()
- {
- Polynomial res;
- res.n = n-1; //понижаем степень
- res.coef = new double [n]; //выделяем память
- for (int i = 1; i<n+1; i++)
- res.coef[i-1] = coef[i]*i; //получаем новые коэффициенты путём умножения на степень
- return res;
- }
- // переопределение экземпляра класса
- Polynomial & Polynomial::operator = ( const Polynomial & p )
- {
- Init( p.n, p.coef); //инициаизируем входящим
- return *this;
- }
- istream & operator >> ( istream & in, Polynomial & p )
- {
- int n = -1;
- cout << "please, enter the Polynomial power: ";
- while ( n < 0 )
- in >> n;
- cout << "please, enter the Polynomial coefficients: " << endl;
- double *coef = new double [n+1];
- for ( int i = n; i >= 0; i-- )
- {
- cout << "x^" << i << ":";
- in >> coef[i];
- }
- p.Init (n, coef);
- return in;
- }
- // вывод полинома в выходной поток
- ostream & operator << ( ostream & out, const Polynomial & p )
- {
- if ( p.n<0 )
- {
- out << "Not exists" << endl;
- return out;
- }
- out << "P(x) = " << p.coef[p.n] <<
- "*x^" << p.n << " + ";
- for ( int i = p.n-1; i >= 0; i-- ){
- out << p.coef[i];
- if (i!=0) out << "*x^" << i <<
- " + ";
- }
- out << endl;
- return out;
- }
- int main()
- {
- Polynomial p1;
- double a[] = { 1, 2, 3, 4};
- Polynomial p2(3, a);
- Polynomial p3;
- cin >> p3;
- cout << "p1 = " << p1
- << "p2 = " << p2
- << "p3 = " << p3;
- p1 = ~p2;
- cout << "p1 = " << p1;
- system("PAUSE");
- return 0;
- }
Add Comment
Please, Sign In to add comment