Считать количество часов, минут и секунд между двумя временными точками - C (СИ)
Формулировка задачи:
программа должна считать количество часов минут и секунд между двумя заданными временами
#include <stdio.h>
struct time{
int hours;
int minutes;
int seconds;
};
int main(void){
struct time time1,time2,time3;
printf("Enter time 1: \n");
scanf("%i:%i:%i",&time1.hours,&time1.minutes,&time1.seconds);
printf("Enter time 2: \n");
scanf("%i:%i:%i",&time2.hours,&time2.minutes,&time2.seconds);
int totalSeconds(struct time x);
int SecondsToTime(int counter);
int n1=totalSeconds(struct time time1);
int n2=totalSeconds(struct time time2);
int n3=n2-n1;
printf("Result is %\n",totalSecods(n3));
}
struct time totalSecods(struct time x){
int counter;
counter+=x.hours*3600;
counter+=x.minutes*60;
counter+=x.seconds;
return counter;
}
struct time secondsToTime(int counter){
while(counter%3600<=3600){
time3.hours++;
counter/=3600;
}
while(counter%60<=60){
time3.minutes++;
counter/=60;
}
time3.seconds=counter;
return time time3;
}Решение задачи: «Считать количество часов, минут и секунд между двумя временными точками»
textual
Листинг программы
#include <stdio.h>
typedef struct time {
int hours;
char minutes,
seconds;
} time;
int totalSeconds(time);
time secondsToTime(int);
int main(void) {
time time1, time2;
printf("Enter time1: \n");
// нужна проверка на ввод так как не может быть больше 60 минут и больше 60 секунд
scanf("%i %c %c", &time1.hours, &time1.minutes, &time1.seconds);
printf("Enter time 2: \n");
scanf("%i %c %c", &time2.hours, &time2.minutes, &time2.seconds);
int n3 = totalSeconds(time2) - totalSeconds(time1);
time time3 = secondsToTime(n3);
printf("Result is %i seconds\n", n3);
printf("hh:mm:ss = %i:%i:%i", time3.hours, time3.minutes, time3.seconds);
}
int totalSeconds(time x) {
return x.hours*3600+x.minutes*60+x.seconds;
}
// counter = содержит время в секундах
time secondsToTime(int counter) {
time _time;
_time.hours = counter / 3600;
_time.minutes = (counter % 3600) / 60;
_time.seconds = counter % 60;
return _time;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с printf и scanf, а также для объявления структуры time.
- Объявляем структуру time, которая содержит переменные hours (количество часов), minutes (количество минут), seconds (количество секунд).
- Функция totalSeconds принимает структуру time и возвращает общее количество секунд.
- Функция secondsToTime принимает количество секунд и возвращает структуру time.
- В функции main мы объявляем две переменные time типа time для хранения времени.
- Мы запрашиваем у пользователя ввод времени в формате часы:минуты:секунды для обеих переменных.
- Мы вычисляем разницу между общим количеством секунд во втором времени и общим количеством секунд в первом времени, используя функцию totalSeconds.
- Мы преобразуем полученное количество секунд обратно в формат часы:минуты:секунды, используя функцию secondsToTime.
- Мы выводим результат на экран.