GVA SUPPORT

Відповідь на запитання № 1304056307
Text:
	ФІО = Горбаченко В.А.

 Запитання:/* Горбаченко В.А. 29 04 2011 08 47
 * Визначити клас, який реалізує поліном.
 * Поліном визначається поядком та масивом коефіцієнтів.
 * Передбачитит методи обчислення значення полінома у
 * заданій точці, знаходження похідної та первісної
 */
#include <iostream>
#include <cstring>
#include <math.h> // УВАГА! Підключаний math.h. Впадло переписувати pow, але для даного випадку це - дуже просто

using namespace std;

class polynom{ // Клас полінома
      public:
      int n;   // Порядок
      double *p_koef; // Вказівник масив коефіцієнтів. Поки що пам'ять для нього не виділена
      void EnterN(){ // функція просить користувача ввести порядок полінома
           do{
                      cout<<" -> Vvedit poryadok [n>=2]: ";
                      cin>>n;
           } while (n<2); // не пропускаємо n<2
           n++;
      }
      void EnterKoef(){   // Вводимо коефіцієнти полінома
           for (int i=n-1 ; i >=0 ; i--){
               cout<<"Enter [ "<<i<<" ] = ";
               cin>>*(p_koef+i);
           }           
      }
      void ShowPoly(){          // вивести поліном на екран
           for (int i=n-1 ; i >=1 ; i--){
               cout<<"("<<*(p_koef+i)<<")"<<"*x^"<<i<<" + ";
           }
           cout<<"("<<*(p_koef)<<")";
           cout<<endl;
      }
      double EnterX(){// Ввести X
             double x;
             cout<<" -> Enter X : ";
             cin>>x;
             return x;
      }
      double CalculatePoly(double x){ // порахувати поліном
           double sum=0;  
           for (int i=n-1 ; i >= 0 ; i--){
               sum+=*(p_koef+i)*pow(x,i);
           }
           return sum;
      }

      void CalculatePoh(){ // похідна          
           cout<<" -> Pohidna = ";
           int i=n-1;
           for (i ; i > 1 ; i--){
               cout<<"("<<i*(*(p_koef+i))<<")"<<"*x^"<<i-1<<" + ";
           }
           cout<<"("<<i*(*(p_koef+i))<<")";
           cout<<endl;
           return ;
      }      
      void CalculatePer(){ // первісна
           cout<<" -> Pervisna = ";
           int i=n-1;
           for (i ; i >= 1 ; i--){
               cout<<"("<<(*(p_koef+i))/(i+1)<<")"<<"*x^"<<i+1<<" + ";
           }
           cout<<"("<<(*(p_koef+i))<<")*x";
           cout<<endl;
           return ;
      }      

      
      
      polynom(){// конструктор
                  EnterN();
                  p_koef=new double [n];// виділяємо місце під пам'ять
                  EnterKoef();                  
      }
      ~polynom(){
               delete(p_koef); // звільнюємо виділену пам'ять
      }
};

int main()
{
    polynom p1; // створюємо поліном, запускається конструктор, 
                // який заповлює його
    p1.ShowPoly(); // Показатии введений поліном
    cout<<endl;
    p1.CalculatePoh(); // Вивести похідну
    p1.CalculatePer(); // Вивести первысну
    cout<<endl;
    
    cout<<" |-> CalculatePoly = "<<p1.CalculatePoly(p1.EnterX())<<endl;
    // Функція рахує значення полінома.
    // функція CalculatePoly приймає значення x і повертає рахунок
    // функція EnterX повертає число, яке користувач ввів з клавіатури
    
    system("PAUSE");
    return 0;
}


====================================

	
Ваша відповідь