Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП Задачи.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
221.76 Кб
Скачать

Задание 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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]