2016-09-28 5 views
0

Это то, что у меня есть до сих пор. Я изучаю структуру, и мне пришлось использовать структуру для задания. Я не понимаю, что не так с моим кодом. Когда я отлаживаю, я получаю 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; 
} 

http://i.stack.imgur.com/VlYVL.png

+0

Просто используйте отладчик. – ilotXXI

ответ

0

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

Вы заявляете об этом, не называя его.

+0

Спасибо. Кроме того, у меня была ошибка в функции int substract ... resultsec = 60 + resultmin должен был быть resultmin = 60 + resultmin – Newbiehere

2

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

int res = subtract(N1, N2); 

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

Btw: прочитайте о глобальных и локальных переменных и параметрах прохождения.