Написать программу, которая вычисляет сколько дней осталось до нового года от введенной пользователем даты. - C (СИ)
Формулировка задачи:
Написать программу, которая вычисляет сколько дней осталось до нового года от введенной пользователем даты.
Помогите пожалуйста!
Решение задачи: «Написать программу, которая вычисляет сколько дней осталось до нового года от введенной пользователем даты.»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int KolDays (int d1,int m1,int y) {
int i,s,d2=31,m2=12;
int mondays[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if ((y%4==0) && (y%100!=0) || (y%400==0)) mondays[1]=29;
if (m1==m2) s=d2-d1;
else {
s=mondays[m1-1]-d1+1;
for (i=m1+1;i<m2;i++) s+=mondays[i-1];
s+=(d2-1);
}
return s;
}
void main () {
printf ("%d\n",KolDays (1,1,2012));
printf ("%d\n",KolDays (1,1,2013));
printf ("%d\n",KolDays (20,12,2013));
printf ("%d\n",KolDays (31,12,2013));
system("pause");
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с вводом/выводом и для работы с математическими функциями.
- Создание функции
KolDays, которая принимает три аргумента типаintдля представления дня, месяца и года. - Внутри функции объявление переменных
i,sиd2для хранения количества дней в месяце (31), значения переменнойs(сумма дней) и переменнойd2(количество дней в декабре). - Объявление массива
mondaysразмером 12 для хранения количества дней в каждом месяце. - В условии, если год високосный (делится на 4, не делится на 100, делится на 400), то в массиве
mondaysдля февраля устанавливается значение 29. - Если месяц и день введены верно (например, не может быть 30 февраля или 31 декабря), то в переменной
sвычисляется количество дней до конца месяца. - Если месяц введен верно, но день не соответствует количеству дней в этом месяце, то в переменной
sвычисляется количество дней до конца месяца, начиная с следующего месяца. - В переменной
sучитывается количество дней в каждом месяце и добавляется количество дней до конца года (декабрь). - Возврат значения переменной
sиз функцииKolDays. - Вызов функции
KolDaysс различными аргументами для проверки работы программы. - Вывод результатов вычислений на экран.
- Ожидание нажатия клавиши для завершения работы программы.