Считать количество часов, минут и секунд между двумя временными точками - 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.
- Мы выводим результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д