
Лабораторные работы / лабы ооп / ooп_4_отчёт вар 9
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
“ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ”
Кафедра “Информатика и вычислительная техника”
ОТЧЕТ
по лабораторной работе ООП №4
“ПОЛИМОРФИЗМ. ПЕРЕГРУЗКА ОПЕРАЦИЙ И ФУНКЦИЙ”
Выполнил:
Студент группы ИВТ-234 Кукушкина А.А.
_____________________________________________________
(дата, подпись)
Проверил:
ст. пр. доцент Дорошенко М.С.
_____________________________________________________
(дата, подпись)
Омск 2024
Лабораторная работа ООП №4
Тема: Полиморфизм. Перегрузка операций и функций
Вариант 9
Задание 1
Условие задачи:
Время задается в формате час/минута/секунда. Реализовать следующие операции (учесть переход через 24 часа):
а) сложение двух моментов времени(операция +);
б) определение времени дня по заданному количеству пройденных секунд(операция /).
Членом класса сделать функцию printf() для вывода конечного времени.
Текст программы:
#include <iostream>
using namespace std;
class TimeSum
{
private:
int hours;
int minutes;
int seconds;
public:
void inputTime()
{
cout << "Введите время (чч/мм/сс): ";
cin >> hours >> minutes >> seconds;
}
TimeSum operator+(const TimeSum& t) const
{
TimeSum sum;
sum.seconds = seconds + t.seconds;
sum.minutes = minutes + t.minutes + sum.seconds / 60;
sum.hours = hours + t.hours + sum.minutes / 60;
sum.seconds %= 60;
sum.minutes %= 60;
sum.hours %= 24;
return sum;
}
friend ostream& operator<<(ostream& os, const TimeSum& t)
{
os << t.hours << "/" << t.minutes << "/" << t.seconds;
return os;
}
};
class TimeOfDay
{
private:
int hours;
int minutes;
int seconds;
public:
void getSeconds()
{
int totalSeconds;
cout << "\nВведите количество секунд для перевода их в чч/мм/сс: ";
cin >> totalSeconds;
if (totalSeconds < 0 || totalSeconds > 86400)
{
cout << "Неверный ввод. Количество секунд должно быть от 0 до 86400." << endl;
return;
}
hours = totalSeconds / 3600;
minutes = (totalSeconds % 3600) / 60;
seconds = totalSeconds % 60;
}
void printTime()
{
cout << "Время: " << hours << "/" << minutes << "/" << seconds << endl;
}
};
int main()
{
setlocale(LC_ALL, "ru");
TimeSum time1, time2, result;
cout << "Введите первый момент времени:" << endl;
time1.inputTime();
cout << "Введите второй момент времени:" << endl;
time2.inputTime();
result = time1 + time2; // использование перегруженного оператора "+"
cout << "Результат сложения двух моментов времени:" << endl;
cout << result; // использование перегруженного оператора "<<" для вывода
TimeOfDay time;
time.getSeconds();
time.printTime();
return 0;
}
Результаты выполнения программы, выводы: