Ошибка с конвертированием времени из секунд в день, час, минуты, секунды - 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, указывающий на успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д