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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цикл до нажатия клавиши, Стандартная ф-я но непомню! 
:(
    Опции темы
6Apokali6sis6
Дата 26.2.2007, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прошу прощения, что обращаюсь со столь простецким вопросом, но требуется организовать цикл условием окончания которого является определённой клавиши из стандартного набора.Если не ошибаюсь в паскале это keypressed, а вот как оно звучит в Си++ хотел бы узнать.
Заранее благодарен.
PM MAIL   Вверх
Fazil6
Дата 26.2.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 35
Всего: 60



getch()
PM MAIL   Вверх
threef
Дата 26.2.2007, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Код

while (!kbhit() ) ; getch();

PM MAIL   Вверх
Fazil6
Дата 26.2.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 35
Всего: 60



Код

/* Display message until key is pressed. */
   while( !_kbhit() )
      _cputs( "Hit me!! " );


PM MAIL   Вверх
Yra
Дата 26.2.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.9.2006
Где: Украина, Киев

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



а я бы цикл поместил в поток. и по нажатию чего-то завершил этот поток.  smile 
PM MAIL   Вверх
ip127001
Дата 26.2.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(threef @  26.2.2007,  21:00 Найти цитируемый пост)
kbhit() 

это из какой библиотеки функция?
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
Greeen
Дата 26.2.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 18



conio.h


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Rockie
Дата 26.2.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



6Apokali6sis6, если для борланда то можно делать к примеру так:
Код

#include<stdio.h>
#include<conio.h>

int main()
{
  char t;

  while(1){
  t = getch();
  if(t == 27) break;         // if pressed ESC
  if(t == ' ') printf("\n"); // if pressed SPACE
  else printf("%c",t);       // display word
  }

  return 0;
}


этот код отображает вводимые символы, при пробеле осуществляет переход на новую строку, при esc - завершает программу, при вводе - не спрашивайте smile

Добавлено @ 00:04 
кстати вышеприведенный код с добавлением 
Код

#include "stdafx.h"

только что скомпилировал в VS 2005smile полтергейтс?


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
6Apokali6sis6
Дата 27.2.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Благодарю, kbhit() это  и есть решение проблемы, а код клавиши вписать в него как 111 или #111?
PM MAIL   Вверх
threef
Дата 27.2.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



если ты ждешь конкретную клавишу, то лучше :
Код


while (getch() != '\x20' );// hex- код пробела
   


если ожидание нажатия на любую клавишу:

Код

char pause(int santiseconds=-1)
{
    cputs("pause...\n");
    while ( !kbhit ()  && santiseconds-- !=0 )
        _sleep(0);// все равно 10 мс. "разгружает" процессор - переводит поток в состояние \\ожидания
     return santiseconds ? getch() : '\0' ;     
}


PM MAIL   Вверх
6Apokali6sis6
Дата 1.3.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Угу вот только разве getch() не будет останавливать работу программы и ждать наатия клавиши? А вот kbhit() не останавливает основную работу, например внутренностей цикла. посему мне нужен кбхит, и отсюда вопрос, там кк онкретному символу можно обратиться так-же как тут:
Код

while (getch() != '\x20' );// hex- код пробела

И ещё один вопрос, что есть хекс код?Как он согласуется с таблицой ASCII?

Это сообщение отредактировал(а) 6Apokali6sis6 - 1.3.2007, 20:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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