Заданы две строки, содержащие время в определенном формате. Определить разницу между этими временами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Заданы две строки, содержащие время в формате: HH:MM:SS. Определить разницу между этими временами. При вводе проверять корректность времени. Пример: 23:30:00 и 5:45:00 → 6:15:00.

Решение задачи: «Заданы две строки, содержащие время в определенном формате. Определить разницу между этими временами»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. struct List
  4. {
  5.     int hours, minutes, seconds;
  6. };
  7.  
  8.  
  9.  
  10. int main()
  11. {
  12.     List a, b,result;
  13.     scanf("%i:%i:%i", &a.hours,&a.minutes,&a.seconds);
  14.     if (a.hours > 23 || a.minutes > 59 || a.seconds > 59)
  15.     {
  16.         printf("error");
  17.         return 1;
  18.     }
  19.     scanf("%i:%i:%i", &b.hours, &b.minutes, &b.seconds);
  20.     if (b.hours > 23 || b.minutes > 59 || b.seconds > 59)
  21.     {
  22.         printf("error");
  23.         return 1;
  24.     }
  25.     if (b.seconds < a.seconds)
  26.     {
  27.         b.seconds += 60;
  28.         b.minutes--;
  29.         if (b.minutes == -1)
  30.         {
  31.             b.hours--;
  32.             b.minutes += 60;
  33.             if (b.hours == -1)
  34.             {
  35.                 printf("error");
  36.                 return 1;
  37.             }
  38.         }
  39.     }
  40.     result.seconds = b.seconds - a.seconds;
  41.     if (b.minutes<a.minutes)
  42.     {
  43.         b.hours--;
  44.         b.minutes += 60;
  45.         if (b.hours == -1)
  46.         {
  47.             printf("error");
  48.             return 1;
  49.         }
  50.     }
  51.     result.minutes = b.minutes - a.minutes;
  52.  
  53.     if (b.hours<a.hours)
  54.     {
  55.         printf("error");
  56.         return 1;
  57.     }
  58.     result.hours = b.hours - a.hours;
  59.     printf("%i:%i:%i\n", result.hours, result.minutes, result.seconds);
  60.     return 0;
  61. }

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки ввода-вывода
  2. Объявление структуры List, содержащей часы, минуты и секунды
  3. Объявление трех переменных типа List для хранения времени
  4. Ввод времени через консоль для переменной a
  5. Проверка корректности введенного времени. Если время некорректное, выводится сообщение об ошибке и возвращается 1
  6. Ввод времени через консоль для переменной b
  7. Проверка корректности введенного времени. Если время некорректное, выводится сообщение об ошибке и возвращается 1
  8. Если секунды времени b меньше, чем секунды времени a, то секунды b увеличиваются на 60, минуты b уменьшаются на 1, и если минуты b станут отрицательными, то часы b уменьшаются на 1, а минуты увеличиваются на 60. Если в процессе выполнения этих операций возникнет ошибка (один из параметров станет отрицательным), выводится сообщение об ошибке и возвращается 1
  9. Результат разницы секунд сохраняется в переменной result
  10. Если минуты времени b меньше, чем минуты времени a, то часы b уменьшаются на 1, минуты увеличиваются на 60, и если в процессе выполнения этих операций возникнет ошибка (один из параметров станет отрицательным), выводится сообщение об ошибке и возвращается 1
  11. Результат разницы минут сохраняется в переменной result
  12. Если часы времени b меньше, чем часы времени a, то выводится сообщение об ошибке и возвращается 1
  13. Результат разницы часов сохраняется в переменной result
  14. Результат выводится на экран
  15. Возвращается 0, если все операции выполнены корректно

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы