Заданы две строки, содержащие время в определенном формате. Определить разницу между этими временами - C (СИ)
Формулировка задачи:
Заданы две строки, содержащие время в формате: HH:MM:SS. Определить разницу между этими временами. При вводе проверять корректность времени. Пример: 23:30:00 и 5:45:00 → 6:15:00.
Решение задачи: «Заданы две строки, содержащие время в определенном формате. Определить разницу между этими временами»
textual
Листинг программы
- #include <stdio.h>
- struct List
- {
- int hours, minutes, seconds;
- };
- int main()
- {
- List a, b,result;
- scanf("%i:%i:%i", &a.hours,&a.minutes,&a.seconds);
- if (a.hours > 23 || a.minutes > 59 || a.seconds > 59)
- {
- printf("error");
- return 1;
- }
- scanf("%i:%i:%i", &b.hours, &b.minutes, &b.seconds);
- if (b.hours > 23 || b.minutes > 59 || b.seconds > 59)
- {
- printf("error");
- return 1;
- }
- if (b.seconds < a.seconds)
- {
- b.seconds += 60;
- b.minutes--;
- if (b.minutes == -1)
- {
- b.hours--;
- b.minutes += 60;
- if (b.hours == -1)
- {
- printf("error");
- return 1;
- }
- }
- }
- result.seconds = b.seconds - a.seconds;
- if (b.minutes<a.minutes)
- {
- b.hours--;
- b.minutes += 60;
- if (b.hours == -1)
- {
- printf("error");
- return 1;
- }
- }
- result.minutes = b.minutes - a.minutes;
- if (b.hours<a.hours)
- {
- printf("error");
- return 1;
- }
- result.hours = b.hours - a.hours;
- printf("%i:%i:%i\n", result.hours, result.minutes, result.seconds);
- return 0;
- }
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода
- Объявление структуры List, содержащей часы, минуты и секунды
- Объявление трех переменных типа List для хранения времени
- Ввод времени через консоль для переменной a
- Проверка корректности введенного времени. Если время некорректное, выводится сообщение об ошибке и возвращается 1
- Ввод времени через консоль для переменной b
- Проверка корректности введенного времени. Если время некорректное, выводится сообщение об ошибке и возвращается 1
- Если секунды времени b меньше, чем секунды времени a, то секунды b увеличиваются на 60, минуты b уменьшаются на 1, и если минуты b станут отрицательными, то часы b уменьшаются на 1, а минуты увеличиваются на 60. Если в процессе выполнения этих операций возникнет ошибка (один из параметров станет отрицательным), выводится сообщение об ошибке и возвращается 1
- Результат разницы секунд сохраняется в переменной result
- Если минуты времени b меньше, чем минуты времени a, то часы b уменьшаются на 1, минуты увеличиваются на 60, и если в процессе выполнения этих операций возникнет ошибка (один из параметров станет отрицательным), выводится сообщение об ошибке и возвращается 1
- Результат разницы минут сохраняется в переменной result
- Если часы времени b меньше, чем часы времени a, то выводится сообщение об ошибке и возвращается 1
- Результат разницы часов сохраняется в переменной result
- Результат выводится на экран
- Возвращается 0, если все операции выполнены корректно
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д