Нахождение прошедшего времени

Это то, что я до сих пор. Я изучаю структуру, и мне пришлось использовать структуру для выполнения задания. Я не понимаю, что не так с моим кодом. Когда я отлаживаю, я получаю 0 за час, минуту, секунды. Пожалуйста, посмотрите на мой код.

#include <stdio.h>

struct calculate
{
    int hours;
    int minutes;
    int seconds;
};

struct calculate N1;
struct calculate N2;
int resulthr, resultmin, resultsec;

int substract(struct calculate N1, struct calculate N2)
{
    resultsec = N2.seconds - N1.seconds;
    if (resultsec < 0)
    {
        resultsec = 60 + resultsec;
        --N2.minutes;
    }

    resultmin = N2.minutes - N1.minutes;
    if (resultmin < 0)
    {
        resultsec = 60 + resultmin;
        --N2.hours;
    }

    resulthr = N2.hours - N1.hours;
    if (resulthr < 0)
    {
        resulthr = 24 + resultsec;
    }
    return 0;
}

int main(void)
{
    printf("Enter two times.(hh:mm:ss) ");
    scanf("%i:%i:%i", &N1.hours, &N1.minutes, &N1.seconds);
    scanf("%i:%i:%i", &N2.hours, &N2.minutes, &N2.seconds);

    int substract(calculate N1, calculate N2);

    printf("The elasped time is %i:%i:%i.\n", resulthr, resultmin, resultsec);

    return 0;
}

/images/d6f6b55505e780 f462db01890070efe24770823b.png

2 ответа

Решение

Вызовите реферат (N1, N2); вместо int substract(рассчитать N1, вычислить N2); в основной функции.

Вы объявляли это, не называя это.

Линия int substract(calculate N1, calculate N2); внутри вашего main функция не вызывает ранее определенный subtract метод, но он фактически объявляет другую функцию с тем же именем. Чтобы фактически вызвать метод, напишите:

   int res = subtract(N1, N2);

потом res должно быть 0 и (глобальные) переменные resulthr,resultmin,resultsec должен иметь желаемые значения.

Кстати: пожалуйста, прочитайте о глобальных и локальных переменных и передаваемых параметрах.

Другие вопросы по тегам