Ввести две строки, содержащие время в формате HH:MM:SS, и найти разность во времени - C (СИ)
Формулировка задачи:
Задача.
Требуется ввести 2 строки, используя функции gets и puts, содержащие время в формате HH:MM:SS, и найти разность во времени. Например 21:45:30 и 1:30:30. Разница - 3:45:00.
Задачу легко решить, используя операторы printf,scanf и немного математики. А мне надо использовать библиотеки stdlib.h и string.h. С этими библиотеками мало знаком и немного не понимаю, какие использовать из них функции для работы со строками. Я так понимаю мне надо будет в любом случае перебирать массив строк. Сначала для первой, потом для второй. Оттуда преобразовывать строки в цифры, а потом проводить с ними операции. Но как мне, допустим, преобразовать поочерёдно каждый символ строки в цифру, если он является цифрой?
Если есть возможность, то, пожалуйста, без использования библиотеки ctype.h.
Код не прошу, мне хотя бы алгоритм на словах.
Решение задачи: «Ввести две строки, содержащие время в формате HH:MM:SS, и найти разность во времени»
textual
Листинг программы
#include <stdio.h> static int StrTimeToSeconds(const char* const timeString) { int secondsTotal = 0; signed char hours, minutes, seconds; sscanf(timeString, "%hhd:%hhd:%hhd", &hours, &minutes, &seconds); secondsTotal = seconds + (60 * minutes) + (3600 * hours); return secondsTotal; } static const char* SecondsToTimeString(const int secondsTotal) { static char timeString[9]; signed char hours = secondsTotal / 3600; int temp = secondsTotal - (hours * 3600); signed char minutes = temp / 60; signed char seconds = temp - (minutes * 60); sprintf(timeString, "%hhd:%hhd:%hhd", hours, minutes, seconds); return (const char*)&timeString[0]; } int main(void) { char time1[] = "12:43:24"; char time2[] = "11:15:31"; int difference = StrTimeToSeconds(time1) - StrTimeToSeconds(time2); printf("Difference between %s and %s is %d seconds or %s\n", time1, time2, difference, SecondsToTimeString(difference)); return 0; }
Объяснение кода листинга программы
- В функции
StrTimeToSeconds
происходит перевод времени из строки в секунды - В функции
SecondsToTimeString
происходит перевод времени из секунд в строку - В функции
main
вводятся две строки времени - Происходит вычисление разницы между двумя временами
- Выводится разница в секундах и новое время, соответствующее этой разнице
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д