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