Guest User

Untitled

a guest
May 17th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.56 KB | None | 0 0
  1. // lol4to.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. class Polynomial
  10. {
  11. private:
  12.         double *coef;                   // массив коэффициентов
  13.         int n;                                  // степень полинома
  14.  
  15. public:
  16.         Polynomial(): n(-1), coef (NULL) {};    // пустой конструктор для инициализации
  17.                                                 //экземпляров и массивов экземпляров класса по умолчанию
  18.         Polynomial(double c);
  19.         Polynomial(int s, double* noef);
  20.         // копирующий конструктор
  21.         Polynomial( const Polynomial & p );    
  22.         ~Polynomial();
  23.  
  24.         //инициализация
  25.         void Init (const int n_, double * coef_ );
  26.  
  27.         // перваая производная полинома
  28.         Polynomial operator ~ ();                      
  29.         //оператор присваивания
  30.         Polynomial & operator = ( const Polynomial & p );  
  31.  
  32.         // ввод экземпляров класса из входного потока
  33.         friend istream & operator >> ( istream & in, Polynomial & p );        
  34.         // вывод в выходной поток
  35.         friend ostream & operator << ( ostream & out, const Polynomial & p );  
  36. };
  37.  
  38. // копирующий конструктор
  39. Polynomial::Polynomial( const Polynomial & p )
  40. {
  41.         coef =  NULL; //помечаем как непроинициализированный
  42.         Init( p.n, p.coef ); //инициализируем данными входящего класса
  43. }
  44.  
  45. Polynomial::Polynomial(double c): n(0) //инициализация одним числом
  46. {
  47.         coef = new double [1];
  48.         coef[0] = c;
  49. }
  50.  
  51. Polynomial::Polynomial(int s, double* noef)
  52. {
  53.         coef = NULL;
  54.         Init (s, noef);
  55. }
  56.  
  57. Polynomial::~Polynomial()
  58. {
  59.         if (coef!=NULL) delete [] coef; //очищаем память
  60. }
  61.  
  62. // функция инициализации
  63. void Polynomial::Init(const int n_, double * coef_)
  64. {
  65.         n = n_;
  66.         if (coef!=NULL)
  67.                 delete [] coef; //удаляем, если что-то уже есть
  68.         coef  = new double [n+1]; //выделяем память
  69.         memcpy( coef, coef_, (n+1)*sizeof(double) ); //копируем данные
  70.  
  71. }
  72.  
  73. // перваая производная полинома
  74. Polynomial Polynomial::operator ~ ()
  75. {
  76.         Polynomial res;
  77.         res.n = n-1; //понижаем степень
  78.         res.coef = new double [n]; //выделяем память
  79.         for (int i = 1; i<n+1; i++)
  80.                 res.coef[i-1] = coef[i]*i; //получаем новые коэффициенты путём умножения на степень
  81.         return res;
  82. }
  83.  
  84. // переопределение экземпляра класса
  85. Polynomial & Polynomial::operator = ( const Polynomial & p )
  86. {
  87.         Init( p.n, p.coef); //инициаизируем входящим
  88.         return *this;
  89. }
  90.  
  91. istream & operator >> ( istream & in, Polynomial & p )
  92. {
  93.         int n = -1;
  94.         cout << "please, enter the Polynomial power: ";
  95.         while ( n < 0 )
  96.                 in >> n;
  97.         cout << "please, enter the Polynomial coefficients: " << endl;
  98.         double *coef = new double [n+1];
  99.         for ( int i = n; i >= 0; i-- )
  100.         {
  101.                 cout << "x^" << i << ":";
  102.                 in >> coef[i];
  103.         }
  104.         p.Init (n, coef);
  105.         return in;
  106. }
  107.  
  108. // вывод полинома в выходной поток
  109. ostream & operator << ( ostream & out, const Polynomial & p )
  110. {
  111.         if ( p.n<0 )
  112.         {
  113.                 out << "Not exists" << endl;
  114.                 return out;
  115.         }
  116.         out << "P(x) = " << p.coef[p.n] <<
  117.                 "*x^" << p.n << " + ";
  118.         for ( int i = p.n-1; i >= 0; i-- ){
  119.                 out << p.coef[i];
  120.                 if (i!=0) out << "*x^" << i <<
  121.                         " + ";
  122.         }
  123.         out << endl;
  124.         return out;
  125. }
  126.  
  127. int main()
  128. {
  129.         Polynomial p1;
  130.         double a[] = { 1, 2, 3, 4};
  131.         Polynomial p2(3, a);
  132.         Polynomial p3;
  133.  
  134.         cin >> p3;
  135.         cout << "p1 = " << p1
  136.                  << "p2 = " << p2
  137.                  << "p3 = " << p3;
  138.         p1 = ~p2;
  139.         cout << "p1 = " << p1;
  140.  
  141.         system("PAUSE");
  142.         return 0;
  143. }
Add Comment
Please, Sign In to add comment