класс полином
Добавлено: 02 ноя 2009, 13:11
здравствуйте.
такая вот у меня наработка. есть траблы с перегрузкой оператора += , = , *= .
прошу помощи.
такая вот у меня наработка. есть траблы с перегрузкой оператора += , = , *= .
прошу помощи.
Код: Выделить всё
#include <iostream>
#include <iomanip>
#include <cmath>
#include <conio.h>
#include <windows.h>
#include "ConvOem.h"
using namespace std;
CConvOem szbuf(100);
class Vector;
class Polynom
{
private:
size_t m_Dim; //размер
double *m_Pol;
public:
Polynom(); // к-ор по умолчанию
Polynom(const size_t); // к-ор с 1 аргументом
Polynom(const size_t,const double* ); //конструктор с 2 аргументами
Polynom(const Polynom&); // Конструктор копирования
~Polynom(); // Деструктор
size_t GetDim() const {return m_Dim;} // Получение степени
//void SetDim(int y){ m_Dim = y; } // Изменение Степени.
double GetKof(const size_t i); //Получение i-ого коэффициента.
void SetKof(const size_t i,const double x ); // Изменение i-ого коэффициента.
void Show() const;
friend Vector Vec2Poly(const Polynom &);
friend Polynom Poly2Vec(const Vector &);
Polynom operator+() {return *this;} //перегрузка унарного оператора "+"
Polynom operator-(); //перегрузка унарного оператора "-"
Polynom & operator=(Polynom &no);
Polynom & operator=(double no);
Polynom & operator+=(Polynom &no);
Polynom & operator+=(double no);
Polynom & operator-=(Polynom &no);
Polynom & operator-=(double no);
Polynom & operator*=(Polynom &no);
Polynom & operator*=(double no);
Polynom & operator/=(double no);
Polynom & operator^=(double no);
};
class Vector
{
private:
size_t m_Dim; // Размер вектора.
double *m_pVec; //адрес массива с координатами вектора
public:
Vector(size_t,double*); //конструктор с 1-им параметром
Vector(size_t); //конструктор с 2-мя параметром
Vector();
Vector(const Vector&); //конструктор копирования
~Vector(); // Деструктор.
double GetKof(const size_t i); // Получение i-ой координаты.
void SetKof(const size_t i, const double x); // Изменение i-ой координаты.
size_t GetDim() const {return m_Dim;} // Получение размера вектора.
void Show() const; // Вывод вектора.
friend Vector Vec2Poly(const Polynom &);
friend Polynom Poly2Vec(const Vector &);
};
double Vector::GetKof(const size_t i)
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение")<<endl;;
exit(-1);
}
return m_pVec[i-1];
}
void Vector::SetKof(const size_t i,const double x )
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение ")<<endl;
exit(-1);
}
m_pVec[i-1]=x;
}
void Vector::Show() const
{
cout << '(';
size_t i;
for (i = 0; i < m_Dim; ++i)
{
cout << m_pVec[i];
if (i < m_Dim - 1) cout << ", ";
}
cout << ')' << endl;
}
Vector::Vector(const size_t Dim,double* pVec):m_Dim(Dim) // к-ор с 2мя арг
{
m_pVec=new double[Dim];
if (!m_pVec)
{
cout <<szbuf.toOemA( "Ошибка! Неверный размер вектора." )<< endl;
exit(-3);
}
for(int i=0;i<m_Dim;i++)
m_pVec[i]=pVec[i];
}
Vector::Vector(size_t Dim):m_Dim(Dim) // к-ор с 1им арг
{
m_pVec= new double[m_Dim];
if (!m_pVec)
{
cout <<szbuf.toOemA( "Ошибка! Неверный размер вектора." )<< endl;
exit(-1);
}
for(int i=0;i<m_Dim;i++)
m_pVec[i]=0.0;
}
Vector::Vector():m_Dim(1) // к-ор без арг
{
m_pVec=new double [m_Dim];
if(!m_pVec) {
cout<<"Error"<<endl;
exit (-1);
}
}
Vector::Vector(const Vector& cv):m_Dim(cv.m_Dim) //конструктор копирования
{
if (!(m_pVec=new double[m_Dim]))
{
cout<<szbuf.toOemA("Нет памяти") <<endl;
exit(-1);
}
//копирование координат
size_t i;
for(i=0;i<m_Dim;++i)
m_pVec[i]=cv.m_pVec[i];
cout<<szbuf.toOemA("копия создана Vec") <<endl;
}
Vector::~Vector()
{
cout << szbuf.toOemA("Вектор успешно удалён ...") << endl;
delete[] m_pVec;
}
Polynom Poly2Vec(const Vector& cv)
{
Polynom c(cv.m_Dim-1);
for(int i=0; i < cv.m_Dim; ++i)
c.m_Pol[i]=cv.m_pVec[i];
return c;
}
Vector Vec2Poly(const Polynom& cc)
{
//создадим объект класса вектор
Vector v(cc.m_Dim);
for(int i=0; i<cc.m_Dim; ++i)
v.m_pVec[i]=cc.m_Pol[i];
return v;
}
double Polynom::GetKof(const size_t i)
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение")<<endl;;
exit(-1);
}
return m_Pol[i-1];
}
void Polynom::SetKof(const size_t i,const double x )
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение ")<<endl;
exit(-1);
}
m_Pol[i]=x;
}