Домашно 1
Задача 1.
Напишете клас Person с две полета -
име човек и неговата възраст, и клас Car
с три полета:
• модел на автомобила;
• указател към собственика (Person*);
• указател към водача (също Person*).
Напишете програма, която чете файла input.txt
и съхранява хората във вектор <Person
*> и и автомобилите във вектор <Car
*>. Обходете вектора от хората и увеличете
възрастта на всеки с една година. Накрая, обходете вектора на
автомобилите и отпечатайте модела на колата, името и възрастта на
собственика, името на водача и възрастта му.
Файл input.txt
4
Ivan 25
Nina 32
Nikolay 44
Penka 28
3
Peugeot Ivan Ivan
Honda Ivan Nina
Scoda Penka Nikolay
Резултат от работата на програмата:
Peugeot
Owner: Ivan 26
Driver: Ivan 26
Honda
Owner: Ivan 26
Driver: Nina 33
Scoda
Owner: Penka 29
Driver: Nikolay 45
Задача 2.
Да се напише основен клас Worker и
производните класове HourlyWorker
(работник с почасово заплащане) и SalariedWorker
(работник със заплата). Всеки работник има име и
почасово заплащане.
Да се напише виртуална функция compute_pay(int
hours), която изчислява седмичното заплащане за
всеки работник. На всеки почасов работник се заплаща часовото
възнаграждение за действителния брой отработени часове, ако часовете
са най-много 40. Ако работещият почасово работи повече от 40 часа,
излишъкът се заплаща с коефициент 1.50 от часовото възнаграждение.
Работник на заплата получава часовото възнаграждение за 40 часа, без
значение какъв е отработения брой часове.
Да се прочете списък с работници от двата типа, да се направи
полиморфна колекция - вектор от указатели. Да се прочете и един ред
с отработените часове за всеки работник от списъка и да се пресметне
неговото седмично заплащане. Да се отпечати таблицата в показания
формат.
Пример - списък с работници:
7
Ivan sal
Nina sal
Petar hou
John sal
Katya hou
Neda sal
Mary hou
30 40 20 50 40 45 50
Изход - решение на примера:
Ivan 400.00
Nina 400.00
Petar 200.00
John 400.00
Katya 400.00
Neda 400.00
Mary 550.00