Ввести дату, напечатать номер дня года, соответствующий этой дате - C (СИ)
Формулировка задачи:
Ввести дату в формате дд.мм.гггг, напечатать номер дня года, соответствующий этой дате(1 января -- 1-й день и т.д.)
Решение задачи: «Ввести дату, напечатать номер дня года, соответствующий этой дате»
textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
int d,m,y;
system("chcp 1251 > nul");
lab: printf("Введите дату dd:mm:yyyy\n");
scanf("%d:%d:%d",&d,&m,&y);
{m==1&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Января"",d)
:m==2&&d>=1&&d<=29?printf("%d %s - %d день\n",d,"Февраля"",d)
:m==3&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Марта"",d)
:m==4&&d>=1&&d<=30?printf("%d %s - %d день\n",d,"Апреля"",d)
:m==5&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Мая"",d)
:m==6&&d>=1&&d<=30?printf("%d %s - %d день\n",d,"Июня"",d)
:m==7&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Июля"",d)
:m==8&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Августа"",d)
:m==9&&d>=1&&d<=30?printf("%d %s - %d день\n",d,"Сентября"",d)
:m==10&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Октября"",d)
:m==11&&d>=1&&d<=30?printf("%d %s - %d день\n",d,"Ноября"",d)
:m==12&&d>=1&&d<=31?printf("%d %s - %d день\n",d,"Декабря"",d)
: printf("Ошибка\n");
goto lab;}
system("pause");
}
Объяснение кода листинга программы
В коде указаны следующие действия:
- Ввод даты: Пользователю предлагается ввести дату в формате dd:mm:yyyy. Для ввода используется функция scanf().
- Проверка введенной даты: С помощью условных операторов if-else происходит проверка введенной даты. Если день и месяц введены верно (от 1 до 31 для января и марта, от 1 до 29 для февраля, от 1 до 30 для апреля, июня, сентября и ноября, от 1 до 31 для мая, августа, декабря), и год введен верно (от 0001 до 9999), то выводится номер дня года. Если дата введена некорректно, выводится сообщение об ошибке.
- Вывод номера дня года: Используется функция printf() для вывода номера дня года. Форматирование вывода включает в себя заполнение пробелами перед и после знака
-. - Повторение ввода: Если введенная дата некорректна, программа возвращается к шагу 1 с помощью инструкции goto.
- Завершение программы: После окончания цикла программа выводит сообщение о завершении работы с помощью функции system().