Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер, выходи из цикла при нажатии клавиши 
V
    Опции темы
JAYBE
Дата 18.1.2013, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



Добрый день.
Узнал про ctime и решил попробовать что-то сделать.
Нужно релизовать вывод секунд и при нажатии клавиши, остановить цикл вывода.
Я сделал так:
Код

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    int i = 1;
    int clock1;
    int z = 0;
    while (i>0) {
        clock1 = clock()/1000000;
        if (z!=clock1) {
            cout << clock1 << endl;
            z+=1;
        }
        i++;
    }
}


Куда нужно вставлять cin.get(), чтобы при нажатии произошёл выход из цикла?
PM   Вверх
feodorv
Дата 18.1.2013, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(JAYBE @  18.1.2013,  15:37 Найти цитируемый пост)
clock()/1000000;

Если мне не изменяет память, делить надо на CLOCKS_PER_SEC. Вообще, приведённый цикл будет бесцельно поедать процессорное время, не говоря уже о том, что в начале будут выведены не секунды, а просто значение счётчика z:
Цитата(JAYBE @  18.1.2013,  15:37 Найти цитируемый пост)

           z+=1;
           z = clock1;


Цитата(JAYBE @  18.1.2013,  15:37 Найти цитируемый пост)
Куда нужно вставлять cin.get(), чтобы при нажатии произошёл выход из цикла? 

Никуда. Здесь cin.get() не обойдёшься. Нужна просто проверка, что клавиша нажата: kbhit() smile 

Это сообщение отредактировал(а) feodorv - 18.1.2013, 16:37


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
dershokus
Дата 18.1.2013, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 7.8.2011

Репутация: нет
Всего: 1



Может быть так?

Код

int main()
{
    int ch=0;
    while(true)
    {
        ch=getch();
        if(ch=='X') return(0);
        printf("clock: %l",clock());
    }
}

PM MAIL   Вверх
JAYBE
Дата 21.1.2013, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



dershokus, а какие библиотеки надо подключить? А то не все выполняется...
PM   Вверх
bsa
Дата 21.1.2013, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



JAYBE, в гугл вбей название функции, которую не находит компилятор
PM   Вверх
JAYBE
Дата 23.1.2013, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



Не работает... Может из-за того что Убунта стоит и Qt?

Такой код тоже не работает:
Код

#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
    int ch=0;
     while(!kbhit());
    {
        //ch=getchar();
        //if(ch=='X') return(0);
        cout << clock() << endl;
           //printf("clock: %l",clock());
    }
}

"Ругается" на #include <conio.h>

Это сообщение отредактировал(а) JAYBE - 23.1.2013, 11:55
PM   Вверх
bsa
Дата 23.1.2013, 12:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



JAYBE, конечно ругается. Потому что conio.h имеется только для винды.
Чтобы решить эту проблему попробуй использовать такую конструкцию:
Код
char ch;
while(!cin.readsome(&ch, 1) && cin.good())
{
   sleep(1); //ждать 1 сек.
   cout << clock() << endl;
}

PM   Вверх
JAYBE
Дата 23.1.2013, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



sleep не исполняется

Нашёл! man 3 sleep
Код

#include <iostream>
#include <stdio.h>
#include <ctime>
#include <unistd.h>
using namespace std;
int main()
{
char ch;
while(!cin.readsome(&ch, 1) && cin.good())
{
    cout << clock() << endl;
    sleep(1);
}
}

Каждую секунду мне выводится <0>. Не совсем то, что ожидал от кода


Это сообщение отредактировал(а) JAYBE - 23.1.2013, 13:53
PM   Вверх
feodorv
Дата 23.1.2013, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(JAYBE @  23.1.2013,  14:45 Найти цитируемый пост)
Каждую секунду мне выводится <0>

А если так:
Код

cout << (double) clock() << endl;
?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
JAYBE
Дата 25.1.2013, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



Цитата(feodorv @ 23.1.2013,  14:39)
Цитата(JAYBE @  23.1.2013,  14:45 Найти цитируемый пост)
Каждую секунду мне выводится <0>

А если так:
Код

cout << (double) clock() << endl;
?

Без имзенений:

0
0
0
0
0
0
0

PM   Вверх
bsa
Дата 25.1.2013, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



 smile 
clock() возвращает сколько программа заняла у процессора времени.

JAYBE, используй лучше time(NULL);
PM   Вверх
JAYBE
Дата 25.1.2013, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



Спасибо =)
А как теперь секунды достать?

P.S. После JS и PHP сложновато такие банальные вещи сделать...
PM   Вверх
bsa
Дата 25.1.2013, 15:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



почитай документацию на localtime
PM   Вверх
JAYBE
Дата 28.1.2013, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.3.2008

Репутация: нет
Всего: 0



Решил сделать таймер по другому...
Код

#include <iostream>
#include <stdio.h>
#include <unistd.h>
using namespace std;
int main() {
    int z = 0;
    char ch;
    while(!cin.readsome(&ch, 1) && cin.good()) {
        sleep(1);
        cout << z++ << endl;
    }
}

Только во на нажатие клавиши он не останавливается...
PM   Вверх
bsa
Дата 28.1.2013, 16:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



JAYBE, жми на enter
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.