Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / лабы ооп / ooп_4_отчёт вар 9

.docx
Скачиваний:
5
Добавлен:
03.07.2024
Размер:
34.49 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

“ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ”

Кафедра “Информатика и вычислительная техника

ОТЧЕТ

по лабораторной работе ООП №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;

}

Результаты выполнения программы, выводы:

Соседние файлы в папке лабы ооп