Как запустить программу на определенное время?
Мне нужно,чтобы программа отработала ровно 30 секунд? Как такое реализовать на с++/с
int main()
{
int start = clock(); // засекаем время старта
// далее фрагмент кода, время работы которого измеряется
int i,j;
for(i = 0; i < 1000; i++)
{
for(j = 0; j < 100; j++)
{
cout<<"a";
fflush(stdout);
}
}
int end = clock(); // засекаем время окончания
int t = (end - start) / CLOCKS_PER_SEC;// команда CLOCKS_PER_SEC нужна для перевода результата функции clock в секунды
cout<<" "<<t; // вывод результата работы на экран
}
при такой реализации выводится 0. Может можно сделать как-то по-другому?
Ответы (1 шт):
0 у Вас выводится из-за того, что выполнение программы занимает менее одной секунды, то есть число при делении на CLOCKS_PER_SEC получается дробное. А Вы его присваиваете переменной типа int, которая представляет целое число. В результате производится округление до целого и получается 0. Чтобы исправить ситуацию, необходимо использовать переменную дробного типа, а также привести к дробному типу переменные, содержащие начальную и конечную метки времени:
int main()
{
int start = clock(); // засекаем время старта
// далее фрагмент кода, время работы которого измеряется
int i,j;
for(i = 0; i < 1000; i++)
{
for(j = 0; j < 100; j++)
{
cout<<"a";
fflush(stdout);
}
}
int end = clock(); // засекаем время окончания
double t = (static_cast<double>(end) - static_cast<double>(start)) / CLOCKS_PER_SEC;// команда CLOCKS_PER_SEC нужна для перевода результата функции clock в секунды
cout<<" "<<t; // вывод результата работы на экран
}
На всякий случай поясню: static_cast<тип 2>(переменная типа 1) используется для приведения типа переменной из типа 1 в тип 2. Это аналогично (тип 2)переменная типа 1 в "чистом" Си (который без ++).
Теперь программа будет выводить дробное число, показывающее сколько секунд заняло выполнение цикла с выводом.