Заданы две строки, содержащие время в определенном формате. Определить разницу между этими временами - 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;
}

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

  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
Похожие ответы