Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функция clock() библиотеки time.h

10K
27 февраля 2007 года
Omega Red
49 / / 15.10.2006
Значит есть такая задача:
Цитата:
Библиотека ANSI содержит функцию clock () со следующим описанием:
#include <time.h>
clock_t clock (void);
Здесь clock_t – тип данных, определенный в файле time.h. Функция возвращает процессорное время в единицах, которые зависят от реализации языка. (Если процессорное время недоступно или не может быть представлено, функция возвращает значение -1.) Однако в файле time.h также определена константа СLOCKS_PER_SEC, которая представляет количество единиц процессорного времени в секунде. Следовательно, в результате деления разницы между двумя возвращаемыми значениями функции clock () на константу CLOCKS_PER_SEC получается количество секунд, прошедшее между двумя вызовами функции. Приведение значений к типу double до операции деления позволит получать результат в долях секунды. Напишите функцию, которая принимает аргумент типа double, представляющий промежуток времени, а затем выполняет цикл до истечения указанного периода времени. Напишите простую программу для тестирования этой функции.



В общем написал я прогу, пройденное время находит нормально. Но не могу подобрать никакого цикла, чтобы происходил указанное время. Первый раз прога запускается, цикл кое-как срабатывает, а в последующие разы цикл как будто длится бесконечно. Что лучше использовать для тестирования прошедшего времени?

Код:
#include <iostream.h>
#include <conio.h>
#include <time.h>

void print(double);

void main()
{
    double a, b, x;

    cout<<"Kogda hotite - zhmite Enter!"<<endl;
    a = (double) clock();
    getch();
    b = (double) clock();

    x = (double) (b-a)/CLOCKS_PER_SEC;
    cout<<"Pro6lo vremeni "<<x<<endl;

    cout<<x*CLOCKS_PER_SEC<<endl;
    print(x);
}

void print(double t)
{
    clock_t b;
    int n = 0;
    b = t*CLOCKS_PER_SEC;
    cout<<"Cikl dlitsya ukazannoe vremya"<<endl;
    for (;2*b != clock();)
    {
    }
    cout<<"Zaverseno"<<endl;

}
361
27 февраля 2007 года
Odissey_
661 / / 19.09.2006
хе =).
ставь знак <, вместо !=.
63
27 февраля 2007 года
Zorkus
2.6K / / 04.11.2006
Для точного профайлинга времени используй http://forum.codenet.ru/showthread.php?t=34821.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог