Главная страница
Случайная страница
Разделы сайта
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Індивідуальні завдання до практичної роботи № 9
Вимоги до ЗАВДАННЯ №1 для всих варіантів:
1) розробити запропонований клас згідно віаріанту: всі данні класу зробити закритими, всі методи – відкритими;
2) в класі окрім данних реалізувати конструктор за замовчуванням (який обнулює всі данні для об’єктів), параметризований конструктор (який задає початкові значення данних об’єктів), конструктор копіювання, деструктор;
3) реалізуванти метод INIT, який організує введення даних об’єктів з клавіатури;
4) реалізуванти метод SHOW, який організує виведення даних об’єктів на екран;
5) реалізуванти методи, які повертають значення закритих данних;
6) реалізувати метод TEST згідно варіанта;
7) в основній програмі (у функції main) необхідно розробити тестову частину, яка повинна:
· створити три об’єкта (перший створюється конструктором за замовчуванням, другий – параметризованим конструктором, третій – конструктором копіювання, який копіює данні з другого об’єкта);
· данні для першого об’єкта вводяться з клавіатури за допомогою виклику метода INIT;
· викликати метод TEST для всих трьох об’єктів;
· вивести данні всих трьох об’єктів на екран через метод SHOW;
· створити масив з двох об’єктів конструктором за замовчуванням, проініціалізувати їх данні за допомогою виклику метода INIT;
· данні масиву об’єктів вивести на екран через метод SHOW;
· для масиву об’єктів реалізувати СПЕЦ-ЗАВДАННЯ (використавши методи, які повертають значення закритих данних);
Вимоги до ЗАВДАННЯ №2 для всих варіантів:
Створити новий проект. Розробити інтерфейс та реалізація класу, як в завданні №1. Всі данні класу та всі методи зробити відкритими. В основній програмі (в функції main) необхідно розробити тестову частину, яка повинна: створювати два об’єкти (перший констрктором з параметрами, другий конструктором за замовчуванням). Данні першого об’єкта записати у файл 1.txt. Відкрити повторно файл 1.txt, зчитати з нього інформацію і записати її у змінні другого об’єкта. Данні другого об’єкта вивести на екран методом SHOW.
Виконати відокремлення інтерфейсу від реалізації класу (тобто, інтерфейс класу записати у заголовочний файл my.h, реалізацію класу записати у заголовочний файл my.cpp, головну функцію main розмістити у файлі testmyclass.cpp)
№ вар.
| Завдання 1
| СПЕЦ-ЗАВДАННЯ
|
| Варіант
1, 16
| Об’явити клас для збереження даних про літаки, який містить данні: номер рейсу літака, назву літака, кількість місць, день відправлення, вартість квитка.
Метод TEST: обчислення та виведення загальної вартості перевезення пасажирів для кожного літака.
| Визначити кількість літаків, які мають більше 50 посадочних місць.
|
| Варіант
2, 17
| Об’явити клас для збереження даних про робітників, який містить данні: прізвище, посада, кількість відпрацьованих годин, категорія.
Метод TEST: обчислення та виведення зарплати робітника згідно категорій (1 категорія – 15грн/год, 2 категорія – 12, 35грн/год).
| Визначити загальну кількість годин, яку відпрацювали всі робітники підприємства.
|
| Варіант
3, 18
| Об’явити клас для збереження даних про станки (назва станка, кількість відпрацьованих годин, кількість виготовлених деталей в годину).
Метод TEST: обчислення та виведення загальної кількості розроблених деталей за всі години для кожного станка.
| Визначити назву станка, який має найменшу кількість відпрацьованих годин.
|
| Варіант
4, 19
| Об’явити клас для збереження даних про студентів (прізвище, група, курс, оцінка з програмування, оцінка з фізики, оцінка з математики.
Метод TEST: обчислення та виведення середнього балу кожного студента.
| Визначити та вивести всі дані про відмінників.
|
| Варіант
5, 20
| Об’явити клас для збереження даних про пацієнта (прізвище, рік народження, частота пульсу і температура).
Метод TEST: визначення та виведення інформації про те, чи показники пацієнта в нормі.
| Визначити та вивести всі дані про пацієнтів, тиск яких підвищений.
|
| Варіант
6, 21
| Об’явити клас для збереження даних про робітників (прізвище, вік, стаж, категорію).
Метод TEST: обчислення та виведення кількість років, які працівнику залишилось відпрацювати до пенсії: (пенсійним віком вважати вік – 60 років).
| Вивести прізвище та категорію працівника з найменшим стажем роботи.
|
| Варіант
7, 22
| Об’явити клас для збереження даних про потяги (номер потяга, місце призначення, середню швидкість потягу, відстань між пунктом відправлення та пунктом призначення).
Метод TEST: обчислення та виведення час ходу кожного потяга.
| Визначити кількість потягів, які прибувають у місце призначення, назва якого починається з літери «А».
|
| Варіант
8, 23
| Об’явити клас для збереження даних про магазини (назва магазину, місце знаходження, товарообіг за місяць в грн, премія). Конструктор з параметрами та метод INIT ініціалізують всі данні окрім премії.
Метод TEST: обчислення премії кожного магазину(якщо продано продукції на суму < 7000 грн – премія 5%, інакше 7%).
Для масиву об’єктів також визвати метод TEST перед виведенням данних.
| Визначити та вивести на екран дані про назву та місце знаходження магазинів, товарообіг яких належить діапазону від 3000грн до 20000грн.
|
| Варіант
9, 24
| Об’явити клас для збереження даних про картку енергоспоживання (прізвище власника будинка, кількість спожитої енергії, сума до сплати (в грн), сплачено (в грн). Конструктор з параметрами та метод INIT ініціалізують всі данні окрім суми до сплати.
Метод TEST: обчислення суми до сплати для кожної картки, якщо вартість електроенергії 2грн/КВт.
Для масиву об’єктів також визвати метод TEST перед виведенням данних.
| Визначити та вивести на екран дані карток всих боржників.
|
| Варіант
10, 25
| Об’явити клас для збереження даних про процесори (назва, покоління, об’єм пам’яті, тактова частота).
Метод TEST: визначення та виведення інформації, чи відносяться процесори до 6 покоління.
| Визначити середню тактову частоту всих процесорів.
|
| Варіант
11, 26
| Об’явити клас для збереження даних про учасника змагання (прізвище, назва спортклуба, час пробігу, швидкість пробігу). Конструктор з параметрами та метод INIT ініціалізують всі данні окрім швидкості.
Метод TEST: визначення швидкость учасника, якщо дистанція пробігу 100м.
Для масиву об’єктів також визвати метод TEST перед виведенням данних.
| Визначити та вивести всі дані переможця пробігу.
|
| Варіант
12, 27
| Об’явити клас для збереження даних про трикутники (назва трикутника, розмір першої сторони, другої сторони, третьої сторони, периметр. Конструктор з параметрами та метод INIT ініціалізують всі данні окрім периметра.
Метод TEST: обчислення периметра кожного трикутника
Для масиву об’єктів також визвати метод TEST перед виведенням данних.
| Визначити та вивести всі дані про трикутники, які мають розмір першої сторони менший, ніж 5см.
|
| Варіант
13, 28
| Об’явити клас для збереження даних про вищі учбові заклади (місто знаходження, назва, кількість спеціальностей, кількість бюджетних місць для вступу).
Метод TEST: визначення та виведення інформації, чи має заклад кількість спеціальностей більшу за 7.
| Визначити назви учбових закладів, які знаходяться в місті, назва якого починається на букву «З».
|
| Варіант
14, 29
| Об’явити клас для збереження даних про автомобіль (модель, вартість, пробіг).
Метод TEST: визначення та виведення інформації, чи має авто пробіг більше 20000 км.
| Визначити середню вартість всих авто.
|
| Варіант
15, 30
| Об’явити клас для збереження даних про країну (назва, президент, кількість населення, площа).
Метод TEST: визначення та виведення інформації, чи має країна населення більше 1 млн. людей.
| Визначити загальну площу країн.
|
|
|
Приклад 1:
class RECTANGLE
{ int x, y; //закриті компоненти класу
рublic: //відкриті компоненти класу
int P, S;
//в конструкторі з параметрами відбувається
// перевірка, чи сторони прямокутника додатні
RECTANGLE(int a, in b) { if (x> 0 & & y> 0)
{x=a; y=b; }
else {x=0; y=0; }}
//конструктор копіювання
RECTANGLE(RECTANGLE & obj)
{x=obj.x; y=obj.y; }
//деструктор
~ RECTANGLE() { }
//методи класу
void Perim() {P=2*(x+y); }
void Plosh() {S=x*y); }
void Prn() {cout< < " Storoni: " < < x< < " " < < y;
cout< < " Perimetr: " < < P;
cout< < " Ploshad: " < < S; }
};
| //Продовження
void main()
{ RECTANGLE rec1(3, 4);
RECTANGLE rec2(5, 8);
RECTANGLE rec3(rec1);
RECTANGLE *ptr=& rec3;
rec1.Perim(); rec1.Plosh(); rec1.Prn();
rec2.Perim(); rec2.Plosh(); rec2.Prn();
ptr-> Perim(); ptr-> Plosh(); ptr-> Prn();
}
| Приклад 2:
Підключення бібліотек…
class MARKET
{ private: //закриті члени класу
char name[50];
float k;
float price;
public: //відкриті члени класу
//конструктори
MARKET();
MARKET(char *n, float kol, float p);
MARKET(const MARKET & obj);
//деструктор
~MARKET();
void prndata(void);
void initdata(void);
char* getname(void);
float getkol(void);
float getprice(void);
float vart(void);
};
//Реалізація класу----------------------------------
MARKET:: MARKET()
{ cout< < " \n\n Ob'ekt stvoreno konstruktorom za
zamovchuvannyam";
strcpy(name, " "); k=0.0; price=0.0; }
MARKET:: MARKET(char *n, float kol, float p)
{ cout< < " \n\n Ob'ekt stvoreno konstruktorom z
parametrami";
strcpy(name, n); k=kol; price=p; }
MARKET:: MARKET(const MARKET & obj)
{cout< < " \n\n Ob'ekt stvoreno konstruktorom
kopiuvannya";
strcpy(name, obj.name); k=obj.k; price=obj.price;
}
MARKET:: ~MARKET()
{cout< < " \n Vidalennya ob'ektu destruktorom"; }
| //Продовження
//Функція виведення даних про товар
void MARKET:: prndata(void)
{ cout< < " \nInformaciya pro tovar: ";
cout< < " \nNazva - " < < name;
cout< < " \tKilkist - " < < k;
cout< < " \tCina - " < < price; }
//Функція введення даних про товар
void MARKET:: initdata(void)
{ cout< < " \n===Vveditе dani pro tovar: ===";
cout< < " \nNazva - "; cin> > name;
cout< < " \nKilkist - "; cin> > k;
cout< < " \nCina - "; cin> > price; }
//Функція отримання назви товару
char* MARKET:: getname(void)
{ return name; }
//Функція отримання кількості товару
float MARKET:: getkol(void)
{ return k; }
//Функція отримання ціни одиниці товару
float MARKET:: getprice(void)
{ return price; }
//Функція обчислення загальної вартості товару
float MARKET:: vart(void)
{ return k*price; }
//Тестова частина----------------------------------
void main()
{ //працює кон-р за замовчуванням для 1 об’єкта
MARKET t1;
cout< < ”\nВведення даних для 1-го товару: ”;
t1.init();
//працює кон-р з параметрами для 2 об’єкта
MARKET t2(" Shokolad", 3.5, 5.90);
//працює конструктор копіювання для 3 об’єкта
MARKET t3(t2);
| //виведення інформації про всі товари
t1.prndata(); cout< < ”Vartist tovaru1 = ”< < t1.vart();
t2.prndata(); cout< < ”Vartist tovaru2 = ”< < t2.vart();
t3.prndata(); cout< < ”Vartist tovaru3 = ”< < t3.vart();
//працює кон-р за замовчуванням
MARKET tov[2]; //створення масиву об’єктів
//Введення даних в масив об’єктів
for(int i=0; i< 2; i++)
{tov[i].initdata(); }
//Виведення даних про товари, обчислення вартості кожного товару, обчислення загальної вартості
float sum=0.0;
for(int i=0; i< 2; i++)
{ tov[i].prndata();
cout< < ”Vartist tovaru = ”< < tov[i].vart();
sum+=tov[i].vart();
}
cout< < ”\nЗагальна вартість всих товарів”< < sum;
//Пошук товарів з вартістю більше 115, 50 грн cout< < ”Товари з вартістю більше 115, 50 грн: ”;
for(int i=0; i< 2; i++)
{ if (tov[i].getprice() > 115.50)
tov[i].prndata(); cout< < " \n";
}
//Пошук кількості товарів з назвою на букву «М»
int kol=0;
for(int i=0; i< 2; i++)
{ char *n; n=tov[i].getname();
if (n[0] == ‘M’) kol++;
}
cout< < ”Кількість товарів з назвою на букву М = ”
< < kol < < ”\n”;
}
|
|