Newb Help

Started by
1 comment, last by AdamGL 16 years, 6 months ago
Im completely lost one how to make a program in C for this problem Write a program that determines the day number ( 1 to 36) in a year for a date that is provided as input data. As an example, January 1 , 1994, is day 1---December 31,1993 is day 365. December 31, 1996, is day 366, since 1996 is a leap year. A year is divisble by four except that any year divisble by 100 is a leap year only if it is divisble by 400. Yor program should accept the month, day and year as intergers. Include function leap that returns 1 if called with a leap year, 0 otherwise if anyone could help me it would be greatly apperciated.
Advertisement
sounds awfully like class-work to to me...

What part has made you lost - how far did you get before giving up?

- Parsing a string-based date into numeric day/month/year?
- Determining if it is a leap year or not using the numeric year?
- Determining how many days are in each month?
I have coded up an EXAMPLE program for you to examine. I have included comments to help you understand what I did. IF YOU ACTUALLY LIKE PROGRAMMING AND WANT TO LEARN THEN YOU WILL NOT SIMPLY TAKE THIS CODE AND HAND IT IN. Also, it may have errors as I have not actually compiled it. So, that being the disclaimer, here you go:

int leap (int year) {	if (year % 400 == 0) {		return 1;	else if (year % 4 == 0) {		return 1;	else		return 0;}int dayInYear (int month, int day, int year) {	int totalDays = 0;	int monthsWithThirtyDays [4] = {4, 6, 9, 11};	// Test for days above 28 or 29 (depending if leap year) in February.	if (month == 2 && day > 28 + leap (year)) {		return -1;	}		// If the month is past February, then make sure we subtract from the         // assumed 31	// days in a month so that we have 28 or 29 days instead.	if (month > 2) 		totalDays = (totalDays - 3) + leap (year);	// Loop through the months with thirty days. 	for (int n = 0; n < 4; n++) {		// If the month matches one of them and the day is above 30,                            // exit.		if (month == monthsWithThirtyDays[n] && day > 30)			return -1;		// If the month is greater than one of the exceptions,		// then subtract one from the total.		if (month > monthsWithThirtyDays[n])			totalDays--;	}		// Assume all months have 31 days and calculate totalDays. The         // algorithms above should	// make the totalDays number negative because of the correction on the         // assumption that every month has 31 days.	totalDays = totalDays + (month - 1) * 31 + day;		return totalDays;}
bi-FreeSoftware

This topic is closed to new replies.

Advertisement