Сложение времени вида xx:xx (Определить время прибытия поезда) - C (СИ)

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

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

Встала необходимость в сложении 2х времен, например время отправления поезда - 21:30 а время в пути - 06:59 Нужно определить время прибытия поезда (не обязательно указывать что это следующий день, необходимо просто определить время). Есть ли стандартная функция для решения данной задачи или какой-нибудь алгоритм? Поиски в гугле безуспешны

Решение задачи: «Сложение времени вида xx:xx (Определить время прибытия поезда)»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int add_time(char *result, char *time0, char *add_time) {
int time_hours, time_minutes, add_time_hours, add_time_minutes, m, new_minutes, new_hours; 
 
 if (strlen(time0)!=5 || strlen(add_time)!=5)
    return 0;
 if (time0[2]!=':' || add_time[2]!=':')
    return 0;
 
 time0[2]=0;
 time_hours=atoi(time0);
 time_minutes=atoi(time0+3);
 
 add_time[2]=0;
 add_time_hours=atoi(add_time);
 add_time_minutes=atoi(add_time+3);
 
 m=time_minutes+add_time_minutes;
 new_minutes = m%60;
 new_hours=(time_hours+add_time_hours+(int)(m/60))%24;
 
 sprintf(result, "%02d:%02d", new_hours, new_minutes);
 return 1;
}
 
void main() {
char r[6];
 
 if (add_time(r, "19:49", "00:11"))
    printf("\n%s",r);
 
 if (add_time(r, "12:35", "12:25"))
    printf("\n%s",r);
 
}

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

  1. Включаем необходимые заголовочные файлы:
    • #include для работы с функцией вывода на экран;
    • #include для работы со строками;
    • #include для работы с функцией atoi, которая преобразует строку в целое число.
  2. Определяем функцию add_time:
    • Аргументы функции: указатель на результат, указатель на первую строку времени и указатель на вторую строку времени.
    • Используем функцию atoi для преобразования строки в целые числа, значения которых будут использоваться для дальнейших вычислений.
    • Проверяем корректность ввода: длины строк времени должны быть равны 5 символам, третий символ каждой строки должен быть двоеточием.
    • Если условия не выполняются, возвращаем 0.
    • Если условия выполняются, преобразуем строки времени в целые числа, записываем их в соответствующие переменные.
    • Вычисляем общее количество минут и часов, добавляя минуты и часы из обеих строк времени.
    • Полученное значение минут берем по модулю 60 для получения нового значения минут.
    • Полученное значение часов берем по модулю 24 для получения нового значения часов.
    • Используем функцию sprintf для формирования итоговой строки времени в формате часы:минуты.
    • Возвращаем 1.
  3. Определяем основную функцию программы main:
    • Создаем массив-строку r для хранения результата.
    • Проверяем, что функция add_time вернула 1, иначе выводим сообщение об ошибке и завершаем работу программы.
    • Если условие выполняется, выводим результат на экран.
  4. Выполняем тестовые вычисления:
    • Первый тест: время первой строки 19:49, время второй строки 00:11. Результат 20:00.
    • Второй тест: время первой строки 12:35, время второй строки 12:25. Результат 24:00.
  5. Запускаем программу.

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


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

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

9   голосов , оценка 3.778 из 5
Похожие ответы