Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 02:11   #1
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию счетчик времени в секундах

уважаемые, извините за возможно глупый вопрос, но поиск не принес результатов...

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

код нужен на С.

заранее благодарен.
Ledom вне форума Ответить с цитированием
Старый 27.02.2011, 03:08   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
	long int lastTime  = clock() / CLK_TCK;
	long int lastTimer = lastTime;
	printf ( "Прошло секунд: %ld \r\n", lastTime);
	while( 1)
	{
		long int currTime   = clock() / CLK_TCK;
		long int timeDelta  = currTime - lastTime;
		long int timerDelta = currTime - lastTimer;
		 if ( timerDelta >=1 )
		{
			printf ( "Прошло секунд: %ld \r\n", lastTime + timeDelta);
			lastTimer =currTime;
		}
		 if ( timeDelta >=3 )
		{
			printf ( "Выполняю действие... \r\n");
			lastTime = currTime;
		}
	}
An1ka вне форума Ответить с цитированием
Старый 27.02.2011, 10:50   #3
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

Спасибо большоеее!)
Ledom вне форума Ответить с цитированием
Старый 01.03.2011, 02:11   #4
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

попытка написать по-другому... подскажите пожалуйста правильно ли считает, и можно вообще так писать...
Код:
#include <stdio.h>
#include <dos.h>
#include  <time.h>
void main()
{
struct time tm1, tm2;
unsigned t=0,pt=0;

gettime(&tm1);

while(1)
	{
		gettime(&tm2);
		t=tm2.ti_sec-tm1.ti_sec;

		  if ( t>=1 )
		{       pt++;
			printf ( "Proshlo sekund: %d \n",pt);
			tm1=tm2;

			 if ( pt%3==0 )
			{
			printf ( "vupolnayu ... \n");
			}

		}


	}

}
Ledom вне форума Ответить с цитированием
Старый 01.03.2011, 04:55   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Форматируй код нормально. Ну хотя бы так:
Код:
#include <stdio.h>
#include <dos.h>
#include <time.h>
void main()
{
    struct time tm1, tm2;
    unsigned t = 0, pt = 0;
    
    gettime(&tm1);
    
    while(1) {
        gettime(&tm2);
        t = tm2.ti_sec - tm1.ti_sec;
        
        if(t >= 1) {
            pt++;
            printf("Proshlo sekund: %d \n", pt);
            tm1 = tm2;

            if(pt % 3 == 0) {
                printf("vupolnayu ... \n");
            }
        }
    }
}
Далее...
Цитата:
#include <dos.h>
Зачем? Эта древняя либа далеко не везде есть.

Цитата:
void main()
void main() не бывает. Должно быть int main().

Цитата:
struct time tm1, tm2
...
t=tm2.ti_sec-tm1.ti_sec;
Нет структуры time. Есть tm. А в tm не поля ti_sec. Есть tm_sec.
http://www.cplusplus.com/reference/clibrary/ctime/tm/

Цитата:
gettime(&tm2);
Такой функции тоже нет. Используйте такую конструкцию:
Код:
  time_t rawtime;
  struct tm * timeinfo;
  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
Кстати, код у An1ka лучше был, ты наворотил что-то зачем-то.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 01.03.2011 в 05:03.
Obey-Kun вне форума Ответить с цитированием
Старый 01.03.2011, 10:09   #6
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

а не легче сделать Sleep(delay) на 1 секунду?
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 01.03.2011, 16:55   #7
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Цитата:
Сообщение от kaljan775 Посмотреть сообщение
а не легче сделать Sleep(delay) на 1 секунду?
Только если выносить в отдельный поток, потому как иначе будет просто тормозить программу.
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 01.03.2011, 21:14   #8
Ledom
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 66
По умолчанию

спасибо буду размышлять...
но Obey-Kun я пишу на С, а не С++, и пишу в BC 3.1, надеюсь многое станет на свои места)
спасибо)
Ledom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик даты и времени tissot Microsoft Office Excel 27 03.02.2014 21:49
Вывод изображений из папки через заданное время в секундах на PHP сайте Killer_djon JavaScript, Ajax 15 18.01.2013 07:19
Счетчик обратного действия в режиме реального времени Панчо PHP 1 20.09.2010 20:37
Счетчик. Bilargo JavaScript, Ajax 2 15.08.2010 13:54
Обратный отсчёт в часах минутах и секундах Shouldercannon Общие вопросы Delphi 18 06.08.2010 21:53