Sum & Difference of Start & Stop Time Using Structure & User Defined Function
Question: Create a structure TIME containing hour,minutes and seconds as its member. Write a program that uses this structure to input start time and stop time in main(). Pass this structure to a function that calculates the sum and difference of start time and stop time. Display the sum and difference from main().
#include<stdio.h>
/* Creating Structure */
typedef struct
{
int hours;
int minutes;
int seconds;
}TIME;
/* Function Prototypes */
TIME add(TIME, TIME);
TIME subtract(TIME, TIME);
int main()
{
TIME start, stop, sum, diff;
clrscr();
printf("Enter hours, minutes and seconds of start time: ");
scanf("%d%d%d", &start.hours, &start.minutes, &start.seconds);
printf("Enter hours, minutes and seconds of stop time: ");
scanf("%d%d%d", &stop.hours, &stop.minutes, &stop.seconds);
sum = add(start, stop);
diff = subtract(start, stop);
printf("Sum: %d:%d:%d\n", sum.hours, sum.minutes, sum.seconds);
printf("Difference: %d:%d:%d\n", diff.hours, diff.minutes, diff.seconds);
getch();
return 0;
}
TIME add(TIME x, TIME y)
{
TIME sum;
sum.seconds = x.seconds + y.seconds;
sum.minutes = x.minutes + y.minutes;
sum.hours = x.hours + y.hours;
if(sum.seconds >= 60)
{
sum.minutes++;
sum.seconds -= 60;
}
if(sum.minutes >= 60)
{
sum.hours ++;
sum.minutes -= 60;
}
return sum;
}
TIME subtract(TIME x, TIME y)
{
TIME diff;
if(x.seconds > y.seconds)
{
y.seconds += 60;
--y.minutes;
}
if(x.minutes > y.minutes)
{
y.minutes += 60;
--y.hours;
}
diff.seconds = y.seconds - x.seconds;
diff.minutes = y.minutes - x.minutes;
diff.hours = y.hours - x.hours;
return diff;
}
Output
Enter hours, minutes and seconds of start time: 2 40 50 Enter hours, minutes and seconds of stop time: 4 30 40 Sum: 7:11:30 Difference: 1:49:50