Напишите программу, которая вводит с клавиатуры номер месяца и день, и определяет, сколько дней
осталось до Нового года. При вводе неверныхданных должно быть выведено сообщение об ошибке. Считается, что годневисокосный.Через case.Ответы на вопрос
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
short int year[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int month = 0, day = 0, daysUntilNewYear = 0;
while (month == 0)
{
cout << "Введите месяц: ";
cin >> month;
if (month < 1 || month > 12)
{
month = 0;
cout << "В году лишь 12 месяцев, повторите ввод" << endl;
}
}
while (day == 0)
{
cout << "Введите день: ";
cin >> day;
if (day > year[month - 1] || day < 1)
{
day = 0;
cout << "В выбранном месяце " << year[month - 1] << " дней, повторите ввод" << endl;
}
}
for (int i = month - 1; i < 12; i++)
{
daysUntilNewYear += year[i];
}
daysUntilNewYear -= day - 1;
cout << "До Нового Года осталось " << daysUntilNewYear << " дней"<< endl;
system("pause");
return 0;
}
Если через case делать, то будет больше кода и он будет менее понятен - смысла в этом нет, поэтому сделал через while.
Для решения этой задачи, напишем программу на языке программирования C++ с использованием конструкции switch-case. В программе мы будем проверять введенные значения номера месяца и дня, а затем рассчитаем количество оставшихся дней до Нового года.
cpp#include <iostream>
int main() {
int month, day;
int days_left = 0;
// Ввод номера месяца
std::cout << "Введите номер месяца (1-12): ";
std::cin >> month;
// Проверка на корректный номер месяца
if (month < 1 || month > 12) {
std::cout << "Ошибка: неверный номер месяца." << std::endl;
return 1;
}
// Ввод дня
std::cout << "Введите номер дня (1-31): ";
std::cin >> day;
// Проверка на корректный номер дня
if (day < 1 || day > 31) {
std::cout << "Ошибка: неверный номер дня." << std::endl;
return 1;
}
// Рассчет оставшихся дней до Нового года через switch-case
switch (month) {
case 1: // Январь
days_left = 31 - day;
break;
case 2: // Февраль
days_left = 31 + 28 - day; // Предполагаем, что год високосный
break;
case 3: // Март
days_left = 31 + 28 + 31 - day;
break;
case 4: // Апрель
days_left = 31 + 28 + 31 + 30 - day;
break;
case 5: // Май
days_left = 31 + 28 + 31 + 30 + 31 - day;
break;
case 6: // Июнь
days_left = 31 + 28 + 31 + 30 + 31 + 30 - day;
break;
case 7: // Июль
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 - day;
break;
case 8: // Август
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 - day;
break;
case 9: // Сентябрь
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 - day;
break;
case 10: // Октябрь
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 - day;
break;
case 11: // Ноябрь
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 - day;
break;
case 12: // Декабрь
days_left = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 - day;
break;
}
// Вывод результата
if (days_left < 0) {
std::cout << "Новый год уже наступил!" << std::endl;
} else {
std::cout << "До Нового года осталось " << days_left << " дней." << std::endl;
}
return 0;
}
Обратите внимание, что в данной программе предполагается, что год високосный, так как мы не учитываем различия в количестве дней в феврале для невисокосных годов. В реальности, для полного учета високосных годов вам потребуется более сложная логика.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
