
- •Задания задание 1
- •Задание 2
- •Задание 3
- •3. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 4
- •Задание 5
- •Задание 6
- •6. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 7
- •Задание 8
- •Задание 9
- •Задание 10
- •Задание 11
- •Задание 12
- •Задание 13
- •17. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 19
- •19. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 20
- •Задание 21
- •Задание 22
- •22. Разработать классы Point и Array, позволяющие использовать их в следующей программе:
- •Задание 23
- •Задание 24
- •Задание 25
- •Задание 26
- •Задание 27
- •Задание 28
- •Задание 29
- •Задание 30
- •Решения Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 6, 17, 19
- •Вариант 18
- •Вариант 20
- •Вариант 21
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26, 28
- •Вариант 27, 29.
- •Вариант 30
Задание 25
25. Написать тексты h-файлов и cpp-файлов для базового класса Point и производного класса Rect (прямоугольник). Описание классов:
Класс |
Элементы данных |
Интерфейс |
Point |
x, y |
Конструкторы, функции move, assign,print |
Rect |
dx, dy |
Конструкторы, функция square, операции =, +=, << |
Привести примеры создания и использования объектов классов Point и Rect. Нарисовать диаграммы классов.
Задание 26
26. Написать тексты h-файлов и cpp-файлов для базового класса Point и производного класса Rect (прямоугольник). Описание классов:
Класс |
Элементы данных |
Интерфейс |
Point |
x, y |
Конструкторы, функции(friend) move, assign операции =,++, ==, << |
Rect |
dx, dy |
Конструкторы, функция square, операции =,++, ==, << |
Привести примеры создания и использования объектов классов Point и Rect. Нарисовать диаграммы классов.
Задание 27
27. Написать тексты h-файлов и cpp-файлов для базового класса Point и производного класса Rect (прямоугольник). Описание классов:
Класс |
Элементы данных |
Интерфейс |
Point |
x, y |
Конструкторы, функции move,print, операции =, == |
Rect |
dx, dy |
Конструкторы, функции move, square, операции =, <, << |
Привести примеры создания и использования объектов классов Point и Rect. Нарисовать диаграммы классов.
Задание 28
28. Написать тексты h-файлов и cpp-файлов для базового класса Point и производного класса Rect (прямоугольник). Описание классов:
Класс |
Элементы данных |
Интерфейс |
Point |
x, y |
Конструкторы, функции(friend) move, assign операции =,++, ==, << |
Rect |
dx, dy |
Конструкторы, функция square, операции =,++, ==, << |
Привести примеры создания и использования объектов классов Point и Rect. Нарисовать диаграммы классов.
Задание 29
29. Написать тексты h-файлов и cpp-файлов для базового класса Point и производного класса Rect (прямоугольник). Описание классов:
Класс |
Элементы данных |
Интерфейс |
Point |
x, y |
Конструкторы, функции move,print, операции =, == |
Rect |
dx, dy |
Конструкторы, функции move, square, операции =, <, << |
Привести примеры создания и использования объектов классов Point и Rect. Нарисовать диаграммы классов.
Задание 30
30. Разработать классы complex и Array, позволяющие использовать их в следующей программе:
complex x, y(4.0, 8.1), z(5.2, 6.0); x=2*y; y= -(z);
Array a1(10); a1[0]=y; a1[1]=z; cout<<x<<a1;
Написать тексты h-файлов и cpp-файлов для классов complex и Array. Нарисовать диаграммы классов.
Решения Вариант 1
Задание:
Разработать классы Point и Array, позволяющие использовать их в следующей программе:
Point p1(10,20), p2; p2=p1*5 + Point(20,30); cout<<(p1+=p2); p1=-p2;
Array a1(10), a2(10); a1[0]=a1[1]=p2; a2+=a1; cout<<a2; a2=-a1;
Написать тексты h-файлов и cpp-файлов для классов Point и Array.
Делал до консультации по Гене, не использовал наследование Array от Point, инициализировал конструкторы явно. В общем это надо доработать
/*Main.cpp*/
void main(){
Point p1(10,20), p2;
p2=p1*5 + Point(20,30);
cout<<(p1+=p2);
p1=-p2;
Array a1(10), a2(10);
a1[0]=a1[1]=p2;
a2+=a1;
cout<<a2;
a2=-a1;
}
/*Point.h*/
class Point{
private:
int x;
int y;
public:
Point();
Point(const int x, const int y);
Point(const Point &p);
Point operator +(const Point& a);
Point operator *(int a);
Point operator +=(const Point& a);
Point operator -(const Point& a);
friend Point operator -(const Point& a);
friend ostream& operator<<(ostream& s, Point& p);
};
/*Array.h*/
class Array
{
private:
Point* p;
int size;
Array();
public:
Array(const int a);
Array(const Array& arr);
Array operator+=(const Array& arr);
Array operator-();
friend ostream& operator<<(ostream& s, Array& arr);
Point& Array::operator[](int index);
Array Array::operator=(Point arr);
};
/*Point.cpp*/
#include "Point.h"
Point::Point()
{
x = 0;
y = 0;
}
Point::Point(int a, int b)
{
x = a;
y = b;
}
Point::Point(const Point& p)
{
x = p.x;
y = p.y;
}
Point Point::operator+(const Point& a)
{
x += a.x;
y += a.y;
return *this;
}
Point Point::operator+=(const Point& a)
{
x += a.x;
y += a.y;
return *this;
}
Point Point::operator*(int a)
{
Point temp;
temp.x= x*a;
temp.y= y*a;
return temp;
}
Point Point::operator-(const Point& a)
{
return Point(this->x - a.x, this->y - a.y);
}
Point operator-(const Point& a)
{
return Point(0 - a.x, 0 - a.y);
}
ostream& operator<<(ostream& s, Point& p)
{
s<< "x=" << p.x << " y=" << p.y << endl;
return s;
}
/*Array.cpp*/
#include "Array.h"
Array Array::operator-(){
for (int i = 0; i < size; i++)
{
p[i] = -p[i];
}
return *this;
}
Array::Array()
{
p = NULL;
size = 0;
}
Array::Array(const int size)
{
this->size = size;
p = new Point[size];
for (int i = 0; i < size; i++)
{
p[i] = Point();
}
}
Array::Array(const Array& arr)
{
p = arr.p;
size = arr.size;
}
Point& Array::operator[](int index){
if (index >= 0) return this->p[index];
return Point(-1, -1);
}
ostream& operator<<(ostream&s, Array& arr){
for (int i = 0; i < arr.size; i++)
{
s << "ArrayElem[" << i << "]:> " << arr[i] << endl;
}
return s;
}
Array Array::operator+=(const Array& arr)
{
int newSize = size + arr.size;
for (int i = size; i < newSize; i++)
{
p[i] = arr.p[i - size];
}
size = newSize;
return *this;
}