Для решения задачи по вычислению числа дней в месяце, основываясь на введённом номере месяца, можно написать программу на любом языке программирования. В данном примере я использую Python, так как он популярен и прост в использовании.
Основная задача программы — сопоставить номер месяца с количеством дней в нём. Важно также учитывать високосные годы, влияющие на количество дней в феврале. В високосном году в феврале 29 дней, в обычном — 28 дней.
Шаги решения:
Ввод данных: Программа должна попросить пользователя ввести номер месяца (от 1 до 12) и год, чтобы определить, является ли он високосным.
Определение високосного года: Год является високосным, если он кратен 4, но не кратен 100, за исключением случаев, когда он также кратен 400.
Сопоставление номера месяца с количеством дней:
- Январь, март, май, июль, август, октябрь, декабрь — 31 день.
- Апрель, июнь, сентябрь, ноябрь — 30 дней.
- Февраль — 28 дней в обычный год и 29 дней в високосный год.
Вывод результата: Программа должна вывести количество дней в указанном месяце.
Пример программы на Python:
def is_leap_year(year):
"""Функция для проверки, является ли год високосным."""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def days_in_month(month, year):
"""Функция для определения количества дней в месяце."""
if month < 1 or month > 12:
return "Некорректный номер месяца. Пожалуйста, введите номер от 1 до 12."
# Количество дней в каждом месяце
month_days = [31, 29 if is_leap_year(year) else 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31]
return month_days[month - 1]
def main():
try:
month = int(input("Введите номер месяца (1-12): "))
year = int(input("Введите год: "))
days = days_in_month(month, year)
print(f"Количество дней в месяце: {days}")
except ValueError:
print("Некорректный ввод. Пожалуйста, введите числовые значения.")
if __name__ == "__main__":
main()
Объяснение кода:
- Функция
is_leap_year(year)
определяет, является ли год високосным, используя правила, описанные выше.
- Функция
days_in_month(month, year)
возвращает количество дней для введённого месяца. Она использует список month_days
, где для февраля учитывается високосность года.
- Функция
main()
управляет вводом данных от пользователя и выводом результата. Она также обрабатывает исключения, связанные с некорректным вводом.
Этот пример программы решает поставленную задачу, обеспечивая корректный вывод количества дней в месяце с учётом високосных годов.