Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a function day_of_year(month, day, year) that returns the day of the year

ID: 3641770 • Letter: W

Question

Write a function day_of_year(month, day, year) that returns the day of the year (an integer between 1 and 366) specified by the three augments.



What is wrong with this:

#include <stdio.h>

int day_of_year(int year, int month, int day)
{
int i, leap;

if (year < 1752 || month < 1 || month > 12 || day < 1)
return -1;

leap = (year%4 == 0 && year%100 != 0) || year%400 == 0;
if (day > daytab[leap][month])
return -1;

for (i = 1; i < month; i++)
day += daytab[leap][i];
return day;
}

/* month_day: set month, day from day of year */
int month_day(int year, int yearday, int *pmonth, int *pday)
{
int i, leap;

if (year < 1752 || yearday < 1)
return -1;

leap = (year%4 == 0 && year%100 != 0) || year%400 == 0;
if ((leap && yearday > 366) || (!leap && yearday > 365))
return -1;

for (i = 1; yearday > daytab[leap][i]; i++)
yearday -= daytab[leap][i];
*pmonth = i;
*pday = yearday;

return 0;
}

/* main: test day_of_year and month_day */
int main(void)
{
int year, month, day, yearday;

for (year = 1970; year <= 2000; ++year) {
for (yearday = 1; yearday < 366; ++yearday) {
if (month_day(year, yearday, &month, &day) == -1) {
printf("month_day failed: %d %d ",
year, yearday);
}
else if (day_of_year(year, month, day) != yearday) {
printf("bad result: %d %d ", year, yearday);
printf("month = %d, day = %d ", month, day);
}
}
}
return 0;
}

Explanation / Answer

You never declared or allocated memory for the daytab two dimensional array

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote