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

22

Міністерство освіти і науки, молоді та спорту Україні

Полтавський політехнічний коледж

Національного Технічного Університету

„Харківський політехнічний інститут”

Звіт з навчальної практики з об’єктно-орієнтованого програмування

Керівник     Жуковець О.О. 

(підпис, посада, прізвище, ініціали)

Студент гр. 35 спец. 5.05010301 Лошманова С.В.

(група, спеціальність, підпис, прізвище, ініціали)

2012

Зміст

Тема 1. Класи, об'єкти, вказівник this………………………………………..………………………3

Тема 2. Конструктори, деструктори……………………………………………….………………..17

Тема 3. Дружні функції і класи………………………………………………………….…………..20

Тема 4. Перевантаження операцій………………………………….……………………………….22

Тема 1. Класи. Об'єкти. Вказівник this.

Мета: Вивчити структуру класу (компоненти класу). Розглянути атрибути доступу. Розглянути принцип роботи.

Індивідуальне завдання 1

Створити клас типу – квадрат. Поля – сторона. Функції-члени вичисляють площу, периметр, встановлює поля і повертають значення. Функції-члени встановлення полів класу повинні перевіряти коректність заданих параметрів.

Текст програми

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

class Kvadrat \\ створюємо клас

{

public:

Kvadrat(double, double, double, double);

double fooP();

double fooS();

private:

double x1, y1, x2, y2;

double perimetr;

double square;

};

Kvadrat::Kvadrat(double a, double b, double c, double d)

{

x1 = a; y1 = b; x2 = c; y2 = d;

if ((sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)))) <= 0) // умова

cout << "Данные координаты не верны!" << endl;

else

{

cout << "Координаты начала и конца одной из сторон квадрата: "

<< "(" << x1 << "," << y1 << ")" << " и " << "(" << x2 << "," << y2 << ")" << endl << endl;

}

}

double Kvadrat::fooP()

{

perimetr = ((sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)))) + (sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))))) / 2; // обчислюємо периметр

return perimetr;

}

double Kvadrat::fooS()

{

square = (sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1))) * sqrt(((x2 - x1)*(x2 - x1)) + ((y2 - y1)*(y2 - y1)))); // обчислюємо площу

return square;

}

Kvadrat q(double, double, double, double);

int main()

{

double x1, y1, x2, y2;

cout << "Введите x1: " << endl;

cin >> x1;

cout << "Введите y1: " << endl;

cin >> y1;

cout << "Введите x2: " << endl;

cin >> x2;

cout << "Введите y2: " << endl;

cin >> y2;

Kvadrat w = Kvadrat(x1, y1, x2, y2);

cout << "Периметр квадрата равен: " << w.fooP();

cout << endl;

cout << "Площадь квадрата равна: " << w.fooS();

getch();

return 0;

}

Результат роботи програми:

Рисунок 1.1

Індивідуальне завдання 2

Розробити підпрограми роботи з деком. Дек організований на масиві із циклічним заповненням та із зсувом. Операції виконуються з обох кінців дека.

Текст програми

#include <iostream.h>

#include <conio.h>

#define n 10

class Dec// оглошуємо клас

{

public:

void revers(int dec[n]){

char v;

do {// заповнення дека

for(int i=0;i<n;i++) dec[i]=dec[i+1];

cin>>dec[n];

cout<<"Continue(y/n)"; cin>>v;

clrscr();

}

while(v!='n');

}

void not_revers(int dec[n]){

char v;

do {

for(int i=n;i>=0;i--) dec[i]=dec[i-1];

cin>>dec[0];

cout<<"Continue(y/n)"; cin>>v;

clrscr();

}

while(v!='n');

}

void Pocaz_Dec(int dec[n]){

for(int i=0;i<n;i++) cout<<dec[i]<<"\t";

getch();

}

};

void main(){

Dec asdf;

int dec[n];

int v;

for(int i=0;i<n;i++) dec[i]=0;

start:clrscr();

cout<<"1-S konca\n";

cout<<"2-S nachala\n";

cout<<"3-Pokazat` Dec\n";

cout<<"4-Exit\n";

cout<<"Sdelaite vibor-> "; cin>>v;

switch(v){

case 1:asdf.revers(dec); goto start;

case 2:asdf.not_revers(dec); goto start;

case 3:asdf.Pocaz_Dec(dec); goto start;

}

getch();

}

Результат роботи програми:

Рисунок 1.2

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