Форум программистов, компьютерный форум CyberForum.ru

Как сбросить значение kbhit()? - C++

Восстановить пароль Регистрация
 
mvgreen
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 15
08.10.2013, 18:37     Как сбросить значение kbhit()? #1
Доброго времени суток. Появилась следующая проблема. Экспериментируя с функцией rand(), написал программу, выводящую случайные числа по нажатию клавиши

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
    SetConsoleCP (1251);
    SetConsoleOutputCP(1251);    
    int magic;
    srand(static_cast< unsigned >(time(0)));
    magic = rand()%101;
    for(;;)
           {
            cout << "Случайное число:" << magic;
            for(;!kbhit(););
            }
    return 0;
}
Однако после первого нажатия клавиши программа генерирует новые случайные числа, не спрашивая. Насколько я понял, программа запомнила значение функции и не сбрасывает его. Подскажите пожалуйста, как сбросить его, либо предложите альтернативное решение задачи. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 18:37     Как сбросить значение kbhit()?
Посмотрите здесь:

C++ Как сбросить поток для чтения файла с начала?
C++ epson xp 207 - как сбросить счетчик
C++ kbhit
C++ Работа с while, kbhit() и getch()
C++ Функция kbhit
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
08.10.2013, 18:42     Как сбросить значение kbhit()? #2
C++
1
2
3
4
5
6
7
#include <conio.h>
 
for(;;)
{
 cout << "Случайное число:" << magic << "\n";
getch();
}
Только обновление числа magic, по видимому, тоже надо в цикл занести
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
08.10.2013, 18:46     Как сбросить значение kbhit()? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
 
void main() {
    char key = 0;
    setlocale(0,"");
    srand(time(NULL));
    while (key != 27) {//  выход, если ESC
         key = getche();
         cout<<"Случайное число: "<<rand() % 101<<endl;
   }
   system("pause");
}
mvgreen
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 15
08.10.2013, 18:59  [ТС]     Как сбросить значение kbhit()? #4
Спасибо, разобрался.
Yandex
Объявления
08.10.2013, 18:59     Как сбросить значение kbhit()?
Ответ Создать тему
Опции темы

Текущее время: 01:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru