diff options
| author | Sadeep Madurange <smadurange@users.noreply.github.com> | 2022-01-05 21:38:37 +0800 |
|---|---|---|
| committer | Sadeep Madurange <smadurange@users.noreply.github.com> | 2022-01-05 21:38:37 +0800 |
| commit | 87761c2c54782588c0a5a7f0a68eabb08407e825 (patch) | |
| tree | 6b39de0df451eaeedfef053fde3ae97a54a6eb30 /5/9.c | |
| parent | a669c07c5fc845bd6db25a79d9b22bd21e3b2831 (diff) | |
| download | k&r-exercises-87761c2c54782588c0a5a7f0a68eabb08407e825.tar.gz | |
5.9
Diffstat (limited to '5/9.c')
| -rw-r--r-- | 5/9.c | 36 |
1 files changed, 3 insertions, 33 deletions
@@ -1,5 +1,3 @@ -#include <stdio.h> - static char daytab[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}}; @@ -8,26 +6,10 @@ static char daytab[2][13] = { int day_of_year(int year, int month, int day) { int i, leap; - // leap year logic is only valid if this is true. - if (year < 1752) { - printf("error: invalid year\n"); - return -1; - } - - if (month < 1 || month > 12) { - printf("error: invalid month\n"); - return -1; - } - - if (day < 1) { - printf("error: invalid day\n"); - return -1; - } - leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0; for (i = 1; i < month; i++) - day += daytab[leap][i]; + day += *(*(daytab + leap) + i); return day; } @@ -36,22 +18,10 @@ int day_of_year(int year, int month, int day) { void month_day(int year, int yearday, int *pmonth, int *pday) { int i, leap; - if (year < 0) { - *pmonth = *pday = -1; - printf("error: invalid year\n"); - return; - } - - if (yearday < 1) { - *pmonth = *pday = -1; - printf("error: invalid yearday\n"); - return; - } - leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0; - for (i = 1; yearday > daytab[leap][i]; i++) - yearday -= daytab[leap][i]; + for (i = 1; yearday > *(*(daytab + leap) + i); i++) + yearday -= *(*(daytab + leap) + i); *pmonth = i; *pday = yearday; |
