Вычислить интервал времени между двумя датами в днях - C (СИ)
Формулировка задачи:
Вычислить интервал времени между двумя датами: B днях
Срочно нужно сделать эту задачку!!
Решение задачи: «Вычислить интервал времени между двумя датами в днях»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
int d1,d2,m1,m2,y1,y2,z1,z2;
printf("Введите первую дату в формате дд.мм.гггг:");
scanf ("%d.%d.%d",&d1,&m1,&y1);
printf("Введите вторую дату в формате дд.мм.гггг:");
scanf ("%d.%d.%d",&d2,&m2,&y2);
z1=y1*365+m1*31+d1;
z2=y2*365+m2*31+d2;
if(z1>z2)printf ("Между первой и второй датой прошло %d дней.\n",z1-z2);
else printf ("Между второй и первой датой прошло %d дней.\n",z2-z1);
system ("pause");
}
Объяснение кода листинга программы
В этом коде:
- Включаются необходимые заголовочные файлы:
stdio.hдля работы с консолью (в частности, функциямиprintfиscanf)math.hдля работы с математическими функциями (в данном случае, используется функцияsqrt)stdlib.hдля работы со стандартными функциями (в данном случае, используется функцияabs)
- Считываются даты:
- Сначала пользователю предлагается ввести первую дату в формате
дд.мм.ггггс помощью функцииscanf. - Затем считывается вторая дата с помощью той же функции.
- Сначала пользователю предлагается ввести первую дату в формате
- Вычисляются значения для контроля ввода:
- Переменные
z1иz2используются для контроля корректности ввода дат. Они представляют собой числа, которые будут увеличиваться на 31 и 365 для каждого дня и месяца соответственно. - Значение
z1представляет собой количество дней с начала эпохи (1 января 1970 года), соответствующее первой дате. - Значение
z2представляет собой количество дней с начала эпохи, соответствующее второй дате.
- Переменные
- Проверяется, какая дата наступила раньше:
- Если
z1меньшеz2, значит, первая дата наступила раньше второй. - Если
z1большеz2, значит, вторая дата наступила раньше первой.
- Если
- Вычисляется и выводится интервал между датами:
- Если первая дата наступила раньше второй, выводится сообщение о том, сколько дней прошло между первой и второй датой.
- Если вторая дата наступила раньше первой, выводится сообщение о том, сколько дней прошло между второй и первой датой.
- Завершение работы программы:
- В конце работы программы вызывается функция
system(pause`), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. Это позволяет пользователю увидеть результаты работы программы перед ее завершением.
- В конце работы программы вызывается функция