-
Notifications
You must be signed in to change notification settings - Fork 3
/
5-8.c
63 lines (45 loc) · 1.43 KB
/
5-8.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
static char day_tab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31 ,30, 31, 30, 31}};
int day_of_year(int year, int month, int day) {
if (month > 12 || month < 1)
printf("ERROR : The month %d does not exist\n", month);
if (year < 0)
year = -year;
int leap;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
leap = 1;
else
leap = 0;
for (int index = 1; index < month; index++)
day += day_tab[leap][index];
return day;
}
void day_month(int year, int year_day, int *pointer_month, int *pointer_day) {
int leap;
int index;
if (year < 0)
year = -year;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
if (year_day < 0 || year_day > 356)
printf("ERROR : Day %d does not exist\n", year_day);
leap = 1;
} else {
if (year_day < 0 || year_day > 355)
printf("ERROR : Day %d does not exist\n", year_day);
leap = 0;
}
for (index = 1; year_day > day_tab[leap][index]; index++)
year_day -= day_tab[leap][index];
*pointer_month = index;
*pointer_day = year_day;
}
int main () {
printf("%d\n", day_of_year(2016, 10, 22));
int month;
int day_of_month;
day_month(2016, 296, &month, &day_of_month);
printf("%d : %d\n", day_of_month, month);
return 0;
}