Jody
April 27th, 1999, 04:41 AM
I need help with my code. It seems to be caught in an endless loop and I can't find the problem
Please Help!!
// program to calculate number of seconds from user entered date until Y2K
#include <stdio.h>
#include <string.h>
void Date();
void ComputeTime();
int day, month, year;
int hour, minute, second;
long hoursLeft, minutesLeft, secondsLeft;
long hoursPast, minutesPast, secondsPast;
int main()
{
while(1)
{
Date();
ComputeTime();
}
return(0);
}
void Date()
{
while (1)
{
printf ("Please enter a date using the following format: \n(hh:mm:ss:mm/dd/yyyy) \n\n");
scanf("%d/%d/%d/%d/%d/%d" ,&hour, &minute, &second, &month, &day, &year);
/* error trapping for month, day and year */
if(hour < 24 && hour >= 0 && minute < 60 && minute >= 0 && second < 60 && second >= 0 &&
(month < 13) && (month > 0) && day < 32 && day > 0 && year < 2100 && year > 1899)
break;
else
{
printf ("Data and/or format is incorrect!\n");
printf ("Please reenter the date using the following format: \n(hh:mm:ss:mm/dd/yyyy) \n\n");
printf ("Date entered = %d/%d/%d/%d/%d/%d\n", hour, minute, second, month, day, year);
}
}
}
void ComputeTime()
{
long yearDiff, days, totalSeconds;
yearDiff = 1999 - year;
if(year < 2000)
{
switch(month)
{
case 12:
days = 31 - day;
break;
case 11:
days = 31 + 30 - day;
break;
case 10:
days = 31 + 30 + 31 - day;
break;
case 9:
days = 31 + 30 + 31 + 30 - day;
break;
case 8:
days = 31 + 30 + 31 + 30 + 31 - day;
break;
case 7:
days = 31 + 30 + 31 + 30 + 31 + 31 - day;
break;
case 6:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 - day;
break;
case 5:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 - day;
break;
case 4:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 - day;
break;
case 3:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 - day;
break;
case 2:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 + 28 - day;
break;
case 1:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 + 28 + 31 - day;
break;
}
hoursLeft = (yearDiff * 8760) + (days * 24) + (23 - hour);
minutesLeft = (60 - minute) - 1;
secondsLeft = (60 - second) - 1;
totalSeconds = (hoursLeft * 3600) + (minutesLeft * 60) + secondsLeft;
printf("Hours,minutes,seconds remaining to New Years Day 2000 are: %ld,%ld,%ld\n", hoursLeft, minutesLeft, secondsLeft);
printf("The total # of seconds remaining to New Years Day 2000 are: %ld\n", totalSeconds);
}
else
{
yearDiff = year - 2000;
switch(month)
{
case 1:
days = day;
break;
case 2:
days = 31 + day;
break;
case 3:
days = 31 + 28 + day;
break;
case 4:
days = 31 + 28 + 31 + day;
break;
case 5:
days = 31 + 28 + 31 + 30 + day;
break;
case 6:
days = 31 + 28 + 31 + 30 + 31 + day;
break;
case 7:
days = 31 + 28 + 31 + 30 + 31 + 30 + day;
break;
case 8:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;
break;
case 9:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;
break;
case 10:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
break;
case 11:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
break;
case 12:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
break;
}
hoursLeft = (yearDiff * 8760) + ((days-1) * 24) + (hour);
minutesLeft = (minute);
secondsLeft = (second);
totalSeconds = (hoursLeft * 3600) + (minutesLeft * 60) + secondsLeft;
printf("hours,minutes,seconds past New Years Day 2000 is: %ld,%ld,%ld\n", hoursLeft, minutesLeft, secondsLeft);
printf("The total # of seconds past New Years Day 2000 is: %ld\n", totalSeconds);
}
}
Please Help!!
// program to calculate number of seconds from user entered date until Y2K
#include <stdio.h>
#include <string.h>
void Date();
void ComputeTime();
int day, month, year;
int hour, minute, second;
long hoursLeft, minutesLeft, secondsLeft;
long hoursPast, minutesPast, secondsPast;
int main()
{
while(1)
{
Date();
ComputeTime();
}
return(0);
}
void Date()
{
while (1)
{
printf ("Please enter a date using the following format: \n(hh:mm:ss:mm/dd/yyyy) \n\n");
scanf("%d/%d/%d/%d/%d/%d" ,&hour, &minute, &second, &month, &day, &year);
/* error trapping for month, day and year */
if(hour < 24 && hour >= 0 && minute < 60 && minute >= 0 && second < 60 && second >= 0 &&
(month < 13) && (month > 0) && day < 32 && day > 0 && year < 2100 && year > 1899)
break;
else
{
printf ("Data and/or format is incorrect!\n");
printf ("Please reenter the date using the following format: \n(hh:mm:ss:mm/dd/yyyy) \n\n");
printf ("Date entered = %d/%d/%d/%d/%d/%d\n", hour, minute, second, month, day, year);
}
}
}
void ComputeTime()
{
long yearDiff, days, totalSeconds;
yearDiff = 1999 - year;
if(year < 2000)
{
switch(month)
{
case 12:
days = 31 - day;
break;
case 11:
days = 31 + 30 - day;
break;
case 10:
days = 31 + 30 + 31 - day;
break;
case 9:
days = 31 + 30 + 31 + 30 - day;
break;
case 8:
days = 31 + 30 + 31 + 30 + 31 - day;
break;
case 7:
days = 31 + 30 + 31 + 30 + 31 + 31 - day;
break;
case 6:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 - day;
break;
case 5:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 - day;
break;
case 4:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 - day;
break;
case 3:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 - day;
break;
case 2:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 + 28 - day;
break;
case 1:
days = 31 + 30 + 31 + 30 + 31 + 30 + 30 + 31 + 30 + 31 + 28 + 31 - day;
break;
}
hoursLeft = (yearDiff * 8760) + (days * 24) + (23 - hour);
minutesLeft = (60 - minute) - 1;
secondsLeft = (60 - second) - 1;
totalSeconds = (hoursLeft * 3600) + (minutesLeft * 60) + secondsLeft;
printf("Hours,minutes,seconds remaining to New Years Day 2000 are: %ld,%ld,%ld\n", hoursLeft, minutesLeft, secondsLeft);
printf("The total # of seconds remaining to New Years Day 2000 are: %ld\n", totalSeconds);
}
else
{
yearDiff = year - 2000;
switch(month)
{
case 1:
days = day;
break;
case 2:
days = 31 + day;
break;
case 3:
days = 31 + 28 + day;
break;
case 4:
days = 31 + 28 + 31 + day;
break;
case 5:
days = 31 + 28 + 31 + 30 + day;
break;
case 6:
days = 31 + 28 + 31 + 30 + 31 + day;
break;
case 7:
days = 31 + 28 + 31 + 30 + 31 + 30 + day;
break;
case 8:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;
break;
case 9:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;
break;
case 10:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;
break;
case 11:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
break;
case 12:
days = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;
break;
}
hoursLeft = (yearDiff * 8760) + ((days-1) * 24) + (hour);
minutesLeft = (minute);
secondsLeft = (second);
totalSeconds = (hoursLeft * 3600) + (minutesLeft * 60) + secondsLeft;
printf("hours,minutes,seconds past New Years Day 2000 is: %ld,%ld,%ld\n", hoursLeft, minutesLeft, secondsLeft);
printf("The total # of seconds past New Years Day 2000 is: %ld\n", totalSeconds);
}
}