Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 18:38   #11
ВасяСВВ
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 33
По умолчанию

Доделываю прогу, уже для себя)))
Но никак не могу розобратса с перегрузками операторов. Вроде конструкторы работают как надо но и это нужно проверить.
Если кто может направить меня в нужное русло, по поводу перегрузки, буду очень благодарен.
Может проблема у алгоритме сочетания?? Незнаю, буду доделывать.



Код:
#include<iostream>
#include<math.h>

using namespace std;
class  Mnohocslen  {
   public:
     int n;
     int x;
     int a[10];

   public:
     Mnohocslen  (int n1, int x1, int a1[10])  //Конструктор з параметрами
     {
        n=n1; x=x1;
        for(int i=0; i<10; i++){
               a[i]=a1[i];
           }
        cout<<"---Konstructor z parametramu--- \n";
     }
     Mnohocslen (Mnohocslen &pl ) {            //Конструктор копіювання
         n=pl.n; x=pl.x;
         for(int i=0; i<10; i++)
         {
             a[i]=pl.a[i];
         }
         cout<<"--Konst Kopijuvanya--- \n";
     }
     void Vvid ();            // Ввід многочлена
     void Vuvid ();           // Вивід многочлена
     int Obcuslenya();        // Обчислення многочлена у точці х
     int ObcuslenyPoxidoi();  // Обчислення похідної многочлена у точці х
     Mnohocslen operator +(Mnohocslen &pl );  // перевантаження операції додавання многочленів
     Mnohocslen operator -(Mnohocslen &pl );  // перевантаження операції віднімання многочленів
     ~Mnohocslen() {       //Деструктор
         cout<<"---Object vudaleno--- \n";
     }
};

void Mnohocslen::Vvid () {    // Ввід многочлена
    cout<<"Vvedit stepeny mnohocslena n: "; cin>>n;
    cout<<"Vvedit koeficientu pru iksax : \n";
    for(int i=0; i<=n; i++) {
        cout<<"a"<<i<<"= ";
        cin>>a[i];
    }
    cout<<"\n\n";
};

void Mnohocslen::Vuvid () {   // Вивід многочлена
  int f=0;
  cout<<"Polinin : \n";
  for (int i=n;i>=0;i--)
      if (a[i]!=0) {
          if(f==0){
             if(i!=0)
                cout<<a[i]<<"*x^"<<i;
             else
                cout<<a[i];
             f++;
          }
      else {
        if(i!=0)
           if(a[i]>0)
               cout<<"+"<<a[i]<<"*x^"<<i;
           else
               cout<<a[i]<<"*x^"<<i;
      else
          if(a[i]>0)
             cout<<"+"<<a[i];
          else
             cout<<a[i];
          f++;
      }
    }
  if (f==0)
     cout<<0;
  cout<<endl;
};

int Mnohocslen::Obcuslenya() {   // обчислення многочлена у точці х
  cout<<"Vvedity X: ";
  cin>>x;
  int Sx=0;
  int xn=1;
  for (int i=0; i<=n; i++ ) {
       Sx+=a[i]*xn; xn=xn*x;
  }
  return Sx;
};

int Mnohocslen::ObcuslenyPoxidoi() {
  int Sp=0;
  int xn=1;
  for (int i=1; i<=n; i++ ) {
     xn=xn*x;  Sp+=i*a[i]*xn;
  }
  return Sp;
};

 Mnohocslen :: Mnohocslen  operator+ ( Mnohocslen &pl ) {
   Mnohocslen* polin = new Mnohocslen ( pl ) ;


   for(int i = 0; i<=pl.n; i++) {
        for(int j=0; j<=pl.n; j++) {
                 if( polin->a[i]==pl.a[j]) {
               polin->a[i]=polin->a[i]+pl.a[j];
             }
             else
               polin->a[i]=polin->a[i];
        }
   }


   return *polin;


};

Mnohocslen :: Mnohocslen  operator -( Mnohocslen &pl ) {
   Mnohocslen* polin = new  Mnohocslen  (pl ) ;


   for(int i = 0; i<=pl.n; i++) {
        for(int j=0; j<=pl.n; j++) {
             if( polin->a[i]==pl.a[j]) {
               polin->a[i]=polin->a[i]-pl.a[j];
             }
             else
               polin->a[i]=polin->a[i];
        }
   }


   return *polin;


};

int main () {


   Mnohocslen* polinom1 = new Mnohocslen (*polinom1);
   Mnohocslen* polinom2 = new Mnohocslen (*polinom2);

   cout<<"Vvedit polinon_1: \n";
   polinom1->Vvid();
   polinom1->Vuvid();
   cout<<"Znacsenya polinona y t. x: "<<polinom1->Obcuslenya()<<endl;
   cout<<"Znacsenya poxidnoi polinona y t. x: "<<polinom1->ObcuslenyPoxidoi()<<endl;
   polinom2->Vvid();
   polinom2->Vuvid();
   polinom1=polinom1 + polinom2;

   polinom1->~Mnohocslen();
   polinom2->~Mnohocslen();


}
ВасяСВВ вне форума Ответить с цитированием
Старый 26.01.2011, 19:30   #12
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Вместо #include<math.h> надо #include<cmath>, сорри за оффтоп.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.01.2011, 19:36   #13
Haarhus
 
Регистрация: 17.01.2011
Сообщений: 6
По умолчанию

Вася, в чем пишете(язык, среда, компилятор)?
/./././././././././././././././././././././././././././././././././././././././././././././././
Вы вечно молитесь своим богам,
и компилятор всё прощает вам.
/./././././././././././././././././././././././././././././././././
Вы вечно молитесь своим богам,
и компилятор всё прощает вам.
Haarhus вне форума Ответить с цитированием
Старый 29.01.2011, 12:16   #14
ВасяСВВ
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 33
По умолчанию

Спасибо.
Среда CodeBlocks;
Компилятор GNU, вроде)))
До недавно писал на Борланде, но решил перейти.
Ну как в чем проблема??

Может я конструктор копирования неправильно сделал???
Или перегрузка оператора ???

Я так думаю що так не раціонально.


Код:
   int a[10];

   public:
     Mnohocslen  (int n1, int x1, int a1[10])  //Конструктор з параметрами
     {
        n=n1; x=x1;
        for(int i=0; i<10; i++){
               a[i]=a1[i];
           }
        cout<<"---Konstructor z parametramu--- \n";
     }

Вирішив зробити так :
Код:
int *a;

   public:
     Mnohocslen  (int n1, int x1, *а )  //Конструктор з параметрами
     {
        n=n1; x=x1;
        a = new int [10];

        cout<<"---Konstructor z parametramu--- \n";
     }
Динамічно оголосити масив. Але програма взагалі не робить.

Последний раз редактировалось Stilet; 30.01.2011 в 11:24.
ВасяСВВ вне форума Ответить с цитированием
Старый 29.01.2011, 13:51   #15
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
 Mnohocslen  (int n1, int x1, )
А это что такое?
Может нужно так:
Код:
 Mnohocslen  (int n1, int x1, int* а)
P.S. Весь код не смотрел программы, возможно у тебя ошибки в нем.
profi вне форума Ответить с цитированием
Старый 29.01.2011, 17:20   #16
ВасяСВВ
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 33
По умолчанию

У меня перегрузки не работают..(((
ВасяСВВ вне форума Ответить с цитированием
Старый 30.01.2011, 00:38   #17
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

ВасяСВВ, официальный язык форума - русский, так что воздержитесь от сообщений на каком-либо другом языке
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класси Friend, помогите пожалуйста Suren Общие вопросы C/C++ 2 28.05.2009 22:42