1
SHORTEST TIME DURATION (30 MARKS)
2
Print the shortest duration between the time values given
in the input array. The time values are given in the format
(hour:minute:second). The time values in the array are in
no particular order.
3
4
5
6
Example:
Input : {12:34:55,1:12:13,8:12:15)
output :
4:22:40
Explanation:
12:34:55 - 8:12:15 = 4:22:40
12:34:55 - 1:12:13 = 11:22:42
8:12:15 - 1:12:13 = 7:0:02
smallest is 4:22:40
Input Format:
Answers
Programiz
Search Programiz
C Program to Calculate Difference Between Two Time Periods
In this example, you will learn to calculate the difference between two time periods using a user-defined function.
To understand this example, you should have the knowledge of the following C programming topics:
C User-defined functions
C struct
C Structure and Function
C structs and Pointers
Calculate Difference Between Two Time Periods
#include <stdio.h>
struct TIME {
int seconds;
int minutes;
int hours;
};
void differenceBetweenTimePeriod(struct TIME t1,
struct TIME t2,
struct TIME *diff);
int main() {
struct TIME startTime, stopTime, diff;
printf("Enter the start time. \n");
printf("Enter hours, minutes and seconds: ");
scanf("%d %d %d", &startTime.hours,
&startTime.minutes,
&startTime.seconds);
printf("Enter the stop time. \n");
printf("Enter hours, minutes and seconds: ");
scanf("%d %d %d", &stopTime.hours,
&stopTime.minutes,
&stopTime.seconds);
// Difference between start and stop time
differenceBetweenTimePeriod(startTime, stopTime, &diff);
printf("\nTime Difference: %d:%d:%d - ", startTime.hours,
startTime.minutes,
startTime.seconds);
printf("%d:%d:%d ", stopTime.hours,
stopTime.minutes,
stopTime.seconds);
printf("= %d:%d:%d\n", diff.hours,
diff.minutes,
diff.seconds);
return 0;
}
// Computes difference between time periods
void differenceBetweenTimePeriod(struct TIME start,
struct TIME stop,
struct TIME *diff) {
while (stop.seconds > start.seconds) {
--start.minutes;
start.seconds += 60;
}
diff->seconds = start.seconds - stop.seconds;
while (stop.minutes > start.minutes) {
--start.hours;
start.minutes += 60;
}
diff->minutes = start.minutes - stop.minutes;
diff->hours = start.hours - stop.hours;
}