This is my program where I find the day of the year based on a date put in. I also have to take into account for leap years. I have all that but when a year put in such as 12/31/1993 is put in, I get the day as 366 which is incorrect because it's not a leap year so the day of the year should be 365. I've tested whether it's my if statement by just giving the program the ability to only test for leap years and to close out if its a non leap year. When the same date was entered, the program closed out telling me that the problem doesn't lie in my if statement but in my case and switches. I'm not really sure as to what's happening or why its adding the extra day to the date.
#include <stdio.h>
int main(void){
int month,day,year,day_number=0;
printf("Enter a date in the form (01/02/1996): ");
scanf("%d/%d/%d", &month,&day,&year);
if(((year%4 == 0) && (year%100 !=0)) || (year%400==0)){
goto two;
}
else{
month=month;
goto one;
}
one:
switch(month)
{
case 1:day_number=day;
break;
case 2:day_number=31+day; //January+Febuary
break;
case 3:day_number=59+day; //January+Febuary+March
break;
case 4:day_number=90+day; //January+Febuary+March+April
break;
case 5:day_number=120+day; //January+Febuary+March+April+May
break;
case 6:day_number=151+day; //January+Febuary+March+April+May+June
break;
case 7:day_number=181+day; //January+Febuary+March+April+May+June+July
break;
case 8:day_number=212+day; //January+Febuary+March+April+May+June+July+August
break;
case 9:day_number=243+day; //January+Febuary+March+April+May+June+July+August+September
break;
case 10:day_number=273+day; //January+Febuary+March+April+May+June+July+August+September+October
break;
case 11:day_number=304+day; //January+Febuary+March+April+May+June+July+August+September+October+November
break;
case 12:day_number=334+day; //January+Febuary+March+April+May+June+July+August+September+October+November+December
break;
}
two:
switch(month)
{
case 1:day_number=day;
break;
case 2:day_number=31+day; //January+Febuary
break;
case 3:day_number=60+day; //January+Febuary+March
break;
case 4:day_number=91+day; //January+Febuary+March+April
break;
case 5:day_number=121+day; //January+Febuary+March+April+May
break;
case 6:day_number=151+day; //January+Febuary+March+April+May+June
break;
case 7:day_number=182+day; //January+Febuary+March+April+May+June+July
break;
case 8:day_number=213+day; //January+Febuary+March+April+May+June+July+August
break;
case 9:day_number=243+day; //January+Febuary+March+April+May+June+July+August+September
break;
case 10:day_number=274+day; //January+Febuary+March+April+May+June+July+August+September+October
break;
case 11:day_number=304+day; //January+Febuary+March+April+May+June+July+August+September+October+November
break;
case 12:day_number=335+day; //January+Febuary+March+April+May+June+July+August+September+October+November+December
break;
}
printf("day %d\n", day_number);
return 0;
}
Aucun commentaire:
Enregistrer un commentaire