Ошибка с конвертированием времени из секунд в день, час, минуты, секунды - 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;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с файлами и вывода данных
- Определение массива длиной 4 элемента для хранения времени в секундах
- Инициализация массива otpravka значениями 8, 4, 6, 47
- Инициализация массива pribitie значениями 9, 11, 51, 13
- Создание массива finalCalcArray для хранения результатов вычислений
- Объявление переменных temp, calcResult и negFlag
- Запуск цикла for для обработки каждого элемента массива otpravka
- Вычисление разницы между элементами массива pribitie и otpravka
- Проверка флага negFlag на значение 1 и установка negFlag в 0 при необходимости
- Проверка значения temp на отрицательность и установка calcResult и negFlag при необходимости
- Сохранение результата в массив finalCalcArray
- Запуск цикла for для вывода результатов на экран
- Вывод значения finalCalcArray на экран
- Возврат 0, указывающий на успешное выполнение программы