Конечно! Мы можем переписать код без использования <stdexcept> и исключений. Вместо этого будем использовать простую проверку и вывод сообщений об ошибках в консоль. Вот обновлённый код:
#include <iostream>
std::string getDayOfWeek(int day, int month) {
// Проверяем корректность месяца
if (month < 1 || month > 12) {
return "Ошибка: неверный месяц. Месяц должен быть от 1 до 12.";
}
// Количество дней в каждом месяце
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// Проверяем корректность дня
if (day < 1 || day > daysInMonth[month]) {
return "Ошибка: неверный день. Проверьте количество дней в месяце.";
}
// Определяем день недели по простому алгоритму
int totalDays = day;
for (int m = 1; m < month; m++) {
totalDays += daysInMonth[m];
}
// Простой алгоритм: делим общее количество дней на 7
// Допустим, что 1 января 2023 - это воскресенье (день 0)
int dayOfWeek = totalDays % 7;
// Массив с названиями дней недели
std::string days[] = {"Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"};
return days[dayOfWeek];
}
int main() {
int day, month;
std::cout << "Введите день и месяц: ";
std::cin >> day >> month;
std::string result = getDayOfWeek(day, month);
// Если результат - сообщение об ошибке, выводим его
if (result.find("Ошибка") != std::string::npos) {
std::cout << result << std::endl;
} else {
std::cout << "День недели: " << result << std::endl;
}
return 0;
}
▎Объяснение изменений:
1. Удаление <stdexcept>: Мы убрали библиотеку, так как теперь не используем исключения.
2. Возврат строк с сообщениями об ошибках: Вместо выброса исключений функция getDayOfWeek теперь возвращает строку с сообщением об ошибке, если входные данные неверны.
3. Проверка результата: В функции main() мы проверяем, содержит ли результат слово "Ошибка". Если да, то выводим сообщение об ошибке; если нет — выводим день недели.
Таким образом, код остаётся простым и понятным для начинающих программистов.