С++(ООП)
перезагрузка операций

Создайте класс Data для работы с временными интервалами.Интервал должен быть представлен в виде двух полей :число типа int и месяц типа int. При выводе день от месяца отделяется точкой.Реализовать :

1) составление временных интервалов (учесть,что в месяце не может быть больше 30 дней)
2) сравнение часовых интервалов (==)

очень прошу помощи​

вот этого я не знаю, в задании это не говорилось

Составление интервалов это просто метод, который выводит наши поля на экран?

скорее всего

а как можно сложить две даты?

Ответ
5 (1 оценка)
2
restIess 2 года назад
Светило науки - 2022 ответа - 1820 раз оказано помощи

#include <iostream>

class Data {

/*

Создаем 2 поля типа private, в которых будет храниться номер дня и месяца.

*/

private:

int day;

int month;

/*

Создаем функции типа public.

Функция inputDate запрашивает у пользователя день/месяц, если вводится неверное значение,

то выводится сообщение и возвращаемся с помощью метки на ввод дня/месяца.

Проверяем мы только число, если будет введено что-то кроме числа - программа упадёт.

*/

public:

void inputDate() {

 d:

 std::cout << "Введите день: ";

 std::cin >> day;

 if (day > 30 || day < 1) {

  std::cout << "В месяце не может быть больше 30 дней!n";

  goto d;

 }

 m:

 std::cout << "Введите номер месяца: ";

 std::cin >> month;

 if (month > 12 || month < 1) {

  std::cout << "Вы ввели неверный номер месяца!n";

  goto m;

 }  

}

/*

Метод printDate просто выводит наш день и месяц через точку.

*/

void printDate() {

 std::cout << day << "." << month << std::endl;

}

friend bool operator== (const Data& c1, const Data& c2);

};

/*

Выполняем перегрузку оператора сравнения ==, до этого в классе объявляем данный метод как дружественный.

*/

bool operator == (const Data& n1, const Data& n2) {

if (n1.month == n2.month && n1.day == n2.day)

 return true;

return false;

}

/*

В основной программе проверяем работу всех наших методов.

*/

signed main(){

setlocale(LC_ALL, "Rus");

 

Data n1, n2;

n1.inputDate();

n2.inputDate();

if (n1 == n2)

 std::cout << "YESn";

else

 std::cout << "NOn";

n1.printDate();

n2.printDate();

return 0;

}

Остались вопросы?