K
kaffein
юди помогите с классами
вот задание :
1. реализировать конструктор по умолчанию, копирования и деструктор.
2.конструкторы которые принимают количество елементов и их начальное значение, а другой количество елементов и указатель на данные, что сохраняются.
3. реализировать оператор приведения до типа который сохраняет класс
4.методы: получение количества елементов класс; добавить елемент; выдалить элемент; поиск подстроки в строке.
5.Операторы :
вектор operator += (вектор)
вектор operator +=(<тип данних>)
вектор operator = (вектор)
вектор operator == (вектор)
вектор operator != (вектор)
<тип данних> operator [] (int i)
Дружні функції
вектор operator +(вектор, вектор)
вектор operator +(вектор, <тип данних>)
вектор operator +(<тип данних>, вектор)
вот моя реализация
вот задание :
1. реализировать конструктор по умолчанию, копирования и деструктор.
2.конструкторы которые принимают количество елементов и их начальное значение, а другой количество елементов и указатель на данные, что сохраняются.
3. реализировать оператор приведения до типа который сохраняет класс
4.методы: получение количества елементов класс; добавить елемент; выдалить элемент; поиск подстроки в строке.
5.Операторы :
вектор operator += (вектор)
вектор operator +=(<тип данних>)
вектор operator = (вектор)
вектор operator == (вектор)
вектор operator != (вектор)
<тип данних> operator [] (int i)
Дружні функції
вектор operator +(вектор, вектор)
вектор operator +(вектор, <тип данних>)
вектор operator +(<тип данних>, вектор)
C++:
#include "stdafx.h"
#include "stdio.h"
#include <time.h>
#include <stdlib.h>
class vector
{
private:
int* m;
int size;
public :
vector(int n = 100);
vector( vector &vector2);
explicit vector(int *data, int size);
explicit vector(int size,int val);
~vector();
int GetSize();
int Push(int val);
void Pop();
int Push_x(int x);
int GetPos(int val);
void print();
vector operator = (vector& vector2);
vector operator += (const vector& s);//+
vector operator += (const int val);//+
vector operator = (const vector& s);//+
int operator == (const vector& s);//+
int operator != (const vector& s);//+
vector operator [] (int n);
};
vector::vector( int n )
{
if (n < 0) n = 0;
size = n;
m = NULL;
if(size)
if( (m = new int[size]) == NULL)
size = 0;
}
vector::vector( vector& vector2)
{
size = vector2.size;
m = NULL;
if(size)
if( (m =new int[size]) == NULL)
size = 0;
else
for(int i = 0; i<size;i++)
*(m + i) = vector2.m[i];
printf("kopia stvorena !");
}
vector::~vector()
{
delete[] m;
}
vector::vector(int *data, int size)
{
this->size = size;
m = NULL;
if(size)
if( (m =new int[size]) == NULL)
size = 0;
else
for(int i = 0; i<size;i++)
*(m + i) = data[i];
}
vector::vector(int size,int val)
{
this->size = size;
m = NULL;
if(size)
if( (m =new int[size]) == NULL)
size = 0;
else
for(int i = 0; i<size;i++)
*(m + i) = val;
}
inline int vector::GetSize(){return size;}
inline int vector::Push(int val)
{
*m = val;
size ++;
return val;
}
void vector::Pop()
{
size = 0;
delete[] m;
}
int vector::Push_x(int x)
{
for(int i=0;i<size;i++)
if(m[i]==x)
{
if(i==(size-1))
{
m[i]=NULL;
size--;
break;
}
for(int j=i;j<size-1;j++)
{
m[j]=m[j+1];
}
size--;
}
return *m;
}
int vector::GetPos(int val)
{
for(int i = 0; i<size; i++)
if(m[i] == val)
return i;
}
void vector::print()
{
printf("%d",m);
}
vector vector::operator += (const vector& vector2)
{
if (size != vector2.size)
return *this;
for (int i = 0; i < size; i++)
*(this->m + i) += *(vector2.m + i);
return *this;
}
vector vector::operator += (int value)
{
int i;
for (i = 0; i < size; i++)
*(this->m + i) += value;
return *this;
}
vector vector::operator = (vector& vector2)
{
if (this == &vector2) return *this;
size = vector2.size;
m = NULL;
if (size)
if ((m=new int[size]) == NULL)
size = 0;
else
for (int i = 0; i < size; i++)
*(m + i) = vector2.m[i];
return *this;
}
int vector::operator == (const vector& vector2)
{
if (size != vector2.size) return 0;
for (int i = 0; i < size; i++)
{
if (*(this->m + i) != *(vector2.m + i))
return 0;
}
return 1;
}
int vector::operator != (const vector& vector2)
{
if (size != vector2.size) return 1;
for (int i = 0; i < size; i++)
{
if (*(this->m + i) != *(vector2.m + i))
return 1;
}
return 0;
}
vector vector::operator [] (int n)
{
if (n < 0) n = 0;
if (n >= size) n = size - 1;
return *( this -> m + n );
}
void rand_vect( vector& x,int size)
{
for (int i=0; i<size; i++)
{
x.Push(rand()%10+1);
}
}
void print( vector& x,int size)
{
for( int i=0; i<size; i++)
{
x.print();
}
}
int main()
{
vector x(10);
rand_vect(x,10);
print(x,10);
system("pause");
return 0;