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