Лабораьорна 2
.docxМіністерство освіти і науки України
Технічний коледж
Національного університету “Львівська політехніка”
Кафедра інформаційних технологій
Звіт
до лабораторної роботи №2
Робота з динамічною пам’яттю
Виконав:
Студент групи: 31-КІ
Мартинюк Р.
Прийняла:
Кинаш Ю. Є.
Львів – 2020
Мета роботи: ознайомитись з можливостями мови C++ для роботи з динамічною пам’ятю та навчитись використовувати їх при роботі з класами та об’єктами.
Послідовність роботи:
1. Ознайомитись з особливостями виділення та звільнення динамічної пам’яті на С++, операціями new та delete .
2. Модифікувати текст програми з ЛР № 1, описати поля даних класу як змінні у динамічній пам’яті.
3. Внести відповідні зміни у конструктори, деструктор, методи доступу та інші функції класу.
4. Реалізувати конструктор копіювання – для створення глибокої копії об’єкта, розглянути на прикладі конструктора копіювання параметри-посилання та константні параметри.
5. Продемонструвати використання вказівника this для доступу до полів та методів класу.
6. Створити об’єкти розробленого класу в динамічній пам’яті.
7. Вивести на екран повідомлення про виконання конструкторів та деструкторів.
8. Визначити, які можливості виділення пам’яті для великих об’ємів даних у масивах-полях класу надає використання динамічної пам’яті.
Індивідуальне завдання:
Створити клас – конус. У закритій частині описати поля – радіус основи та висоту. Визначити конструктор, деструктор, зміни значень полів і отримання їхніх значень, виведення полів класу, обчислення об’єму та площі поверхні конуса. Функції зміни значень полів класу повинні перевіряти коректність параметрів, що задаються.
Текст програми:
#include <iostream>
#include <cmath>
using namespace std;
const int pi = 3.14159265;
class Cone {
int *x, *y, *z;
int *radius;
int *height;
public:
Cone() {x = new int(0);y = new int(0);z = new int(0);radius = new int(0);height = new int(0); }
Cone(int r, int h) {
this->x = new int(x); this->y = new int(y); this->z = new int(z);
radius = r;
height = h;
}
Cone(const Cone &obj);
{x = new int(*obj.x); y = new int(*obj.y); z = new int(*obj.z); radius = new int(*obj.radius); height = new int (*obj.height);}
~Cone(){delete x, delete y, delete z, delete radius, delete height}
void setCoordinate(int a, int b, int c) { x = a; y = b; z = c; }
void setRadius(int r) { int = r; }
void setHeight(int h) { int = h; }
int getRadius() { return radius; }
int getHeight() { return height; }
int area() {
double l = sqrt(height*height + radius*radius);
return pi*radius*(radius+l);
}
int volume() {
return pi*radius*radius*height/3;
}
friend ostream &operator<<(ostream &stream, Cone obj);
};
ostream &operator<<(ostream &stream, Cone obj) {
stream << "(" << obj.x << "; ";
stream << obj.y << "; ";
stream << obj.z << ") ";
stream << "r=" << obj.radius << " ";
stream << "h=" << obj.height << "\n";
}
int main()
{
Cone c1(3, 7);
cout << "Конус : " << c1;
cout << "Площа поверхні: " << c1.area() << "\n";
cout << "Обєм: " << c1.volume() << "\n";
return 0;
}
Контрольний приклад та результати роботи програми:
Висновок: В даній лабораторній роботі знайомився з можливостями мови C++ для роботи з динамічною пам’ятю та навчився використовувати їх при роботі з класами та об’єктами.