2016-08-07 10 views
0
time_t start; 
time_t no_infection; 
bool time_already_set = 0; 
bool infected_or_not = 0; 
int not_infected_t = 0; 

У меня есть эти переменные в структуре, и я хочу отметить начальную и конечную точку объектов, чем вычислять разницу.Как использовать ctime для обозначения начальной и конечной точек программы?

void bacteria::set_no_infection() { 
    if (infected_or_not == 0) 
     no_infection = clock(); 
} 

Для начала я имею

void bacteria::set_time() { 
    if (infected_or_not == 1 && time_already_set!=1) { 
     start = clock(); 
     time_already_set = 1; 
    } 
} 

Кажется, что время переменные не изменяются во время программы я протестировать его с помощью функции ПОЛУЧИТЬ

double bacteria::get_time() { 
    if (infected_or_not == 1) 
     return ((clock() - start)/CLOCKS_PER_SEC); 
    else 
     return -1; 
} 
int bacteria::get_no_infection() { 
    if (infected_or_not = 0) 
     return ((clock() - no_infection)/CLOCKS_PER_SEC); 
    else 
     return -1; 
} 

В основной программе я проверить это, как это:

while (1) { 
    for (int i = 0; i < b.size() - 1; i++) { 
     bactpop[i].set_no_infection(); 
     bactpop[i].inf(phagepop[i], bactpop[i], p); 
     bactpop[i].kill_the_bacteria(b, i); 
     cout << "  " << b[i].start << " " << b[i].no_infection << endl; 
    } 
    cout << p.size() << " " << b.size() << endl; 
} 
+0

в основной программе я проверить это следующим образом: в то время как (1) { \t \t для (INT I = 0; г

ответ

0

Я не уверен, но я думаю, что ваши функции вызывают несколько раз в секунду, и поскольку clock()/CLOCKS_PER_SEC возвращает значения в секундах, разницы будут равны 0, так как вызовы выполняются за ту же секунду.

Используйте, например, gettimeofday с микросекундами или std :: chrono :: high_resolution_clock :: now(), если использовать C++ 11 в порядке.