Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба7 / Laba 7 (1)
.cpp#include <iostream>
#include <stdexcept>
#include <locale>
using namespace std;
class Date {
int day, month, year;
bool isLeapYear(int y) const {
return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}
int daysInMonth(int m, int y) const {
if (m == 2) return isLeapYear(y) ? 29 : 28;
if (m == 4 || m == 6 || m == 9 || m == 11) return 30;
return 31;
}
public:
void set_date(int d, int m, int y) {
if (y < 1) throw invalid_argument("Некорректный год");
if (m < 1 || m > 12) throw invalid_argument("Некорректный месяц");
if (d < 1 || d > daysInMonth(m, y)) throw invalid_argument("Некорректный день");
day = d;
month = m;
year = y;
}
void print() const {
cout << day << "." << month << "." << year << endl;
}
};
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
Date date;
try {
cout << "Корректная дата: ";
date.set_date(15, 5, 2023);
date.print();
} catch (const exception& e) {
cout << "Ошибка: " << e.what() << endl;
}
try {
cout << "Некорректная дата: ";
date.set_date(31, 4, 2023); // В апреле 30 дней
date.print();
} catch (const exception& e) {
cout << "Ошибка: " << e.what() << endl;
}
try {
cout << "Некорректный месяц: ";
date.set_date(15, 13, 2023);
date.print();
} catch (const exception& e) {
cout << "Ошибка: " << e.what() << endl;
}
return 0;
}
Соседние файлы в папке Лаба7
