Ошибка с конвертированием времени из секунд в день, час, минуты, секунды - C (СИ)

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

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

Дана задача в которой надо вычислить время путешествия. Дано время отправки и прибытие в виде четырёх цифр. Отправка [8 4 6 47] -день,час,минут,секунда. Прибытие [9 11 51 13]. Я решил перевести всё в секунды,найти разность и потом секунды обратно конвертировать. Но появилась загвоздка,почему то всё вычисляет правильно, кроме часов. Правильный ответ (1 7 44 26),а у меня (1 31 44 26). Пожалуйста помогите если возможно разобраться с проблемой. Вот код мой:
#include "iostream"
#include "stdlib.h"
#include "conio.h"
int main(){
             int otpravka,pribitie,tretperem;
         int r,hour,second,day,minute;
 
             otpravka=(8*24*60*60)+(4*60*60)+(6*60)+47;
         pribitie=(9*24*60*60)+(11*60*60)+(51*60)+13;
 
    tretperem=pribitie-otpravka;

    day=tretperem;
            day=day/86400;
            r=day%60;
            printf("%i\t",r);

        hour=tretperem;         //Тут вычисляю часы 
            hour=hour/3600; 
            r=hour%60;
            printf("%i\t",r);   //получается 31,а должно быть 7

        minute=tretperem;
            minute=minute/60;
            r=minute%60;
            printf("%i\t",r);

        second=tretperem;
            r=second%60;
            printf("%i\t",r);
        printf("\n-------------------------------------------\n");

    getch();
 
    return 0;
    
}

Решение задачи: «Ошибка с конвертированием времени из секунд в день, час, минуты, секунды»

textual
Листинг программы
#include <stdio.h>
 
#define arrLenght 4
 
int main(void) {
 
    int otpravka[arrLenght] = {8, 4, 6, 47};
    int pribitie[arrLenght] = {9, 11, 51, 13};
    int finalCalcArray[arrLenght] = {0};
    int temp, calcResult, negFlag = 0;
 
    for (int i = arrLenght - 1; i >= 0; i--) {
        temp = pribitie[i] - otpravka[i];
 
        if (negFlag == 1) {
            temp = temp - 1;
            negFlag = 0;
        }
 
        if (temp < 0) {
            calcResult = 60 + temp;
            negFlag = 1;
        } else {
            calcResult = temp;
        }
 
        finalCalcArray[i] = calcResult;
 
    }
 
    for (int i = 0; i < arrLenght; i++) {
        printf("%d\n", finalCalcArray[i]);
    }
 
    return 0;
}

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

  1. Подключение стандартной библиотеки для работы с файлами и вывода данных
  2. Определение массива длиной 4 элемента для хранения времени в секундах
  3. Инициализация массива otpravka значениями 8, 4, 6, 47
  4. Инициализация массива pribitie значениями 9, 11, 51, 13
  5. Создание массива finalCalcArray для хранения результатов вычислений
  6. Объявление переменных temp, calcResult и negFlag
  7. Запуск цикла for для обработки каждого элемента массива otpravka
  8. Вычисление разницы между элементами массива pribitie и otpravka
  9. Проверка флага negFlag на значение 1 и установка negFlag в 0 при необходимости
  10. Проверка значения temp на отрицательность и установка calcResult и negFlag при необходимости
  11. Сохранение результата в массив finalCalcArray
  12. Запуск цикла for для вывода результатов на экран
  13. Вывод значения finalCalcArray на экран
  14. Возврат 0, указывающий на успешное выполнение программы

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


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

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

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