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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
#1

Ввод данных без нажатия Enter - C++

30.06.2011, 03:48. Просмотров 3355. Ответов 2
Метки нет (Все метки)

Здравствуйте.

Допустим, у меня есть такое:
C++
1
2
char ololo;
cin >> ololo;
Тут мне надо ввести символ и нажать Enter.
Как сделать то же самое, но без нажатия Enter'a?

То есть, чтоб нажал на нужную кнопку - и все, символ введен.


Если что, вот зачем мне это надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>  //
#include <windows.h> //
#include <stdlib.h>  //
#include <conio.h>   //
                     //
using namespace std; //
///////////////////////
 
int main()
{
    char array [20][20];    // объявляем массив 20 на 20
    
    // все элементы массива - звездочки
    for (int row = 0; row < 20; row++)
        for (int column = 0; column < 20; column++)
            array [row][column] = '*';
            
    
    int x = 10;
    int y = 10;
    
    array [x][y] = 'Q';    // в точке 10:10 - знак 'Q'
    
    // выводим массив
    for (int row = 0; row < 20; row++)
    {
        for (int column = 0; column < 20; column++)
            cout << array [row][column];
            
        cout << endl;
    }
    
    cout << endl;
    
    char coordinates;     // координаты
    
    while (true)
    {
       cin >> coordinates;      // просим ввести направление
           
       system ("cls");          // очищаем экран
    
       array [x][y] = '*';      // старое место забиваем звездочкой
    
       if (coordinates == 'w')  // меняем координаты в зависимости от нажатия кнопки (w, s, a, d)
          x -= 1;
       else if (coordinates == 's')
          x += 1;
       else if (coordinates == 'a')
          y -= 1; 
       else if (coordinates == 'd')
          y += 1;  
        
       array [x][y] = 'Q';     // 'Q' уже в новом месте
    
       // выводим новый массив    
       for (int row = 0; row < 20; row++)
       {
           for (int column = 0; column < 20; column++)
              cout << array [row][column];
            
              cout << endl;
       }
            
    }
    
    getch ();
    return 0;
}
В общем, погонять символ 'Q' по двумерному массиву 20 на 20.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 03:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод данных без нажатия Enter (C++):

Ввод данных без нажатия «Enter» - C++
Добрый день Интересует такой вопрос После ввода числа нужно нажимать клавишу ENTER Как можно добится того, чтобы после ввода числа...

Ввод символов без нажатия Enter'а - C++
Подскажите пожалуйста, как реализовать считывание символов (одного или нескольких) без нажатия Enter'а.

Ввод цифры без нажатия Enter'a, использование _getch() - C++
доброго времени суток. проблема вот в чем: написал простенькую программу, она высчитывает дискриминант и корни уравнения. попробовал...

Остановить ввод после нажатия клавиши enter - C++
for(int i=0;pass;i++) cin&gt;&gt;pass;-перестает вводить символы после третьего. весь код: #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

Продолжение без нажатия на Enter - C++
В С++ совсем недавно, но интересно сделать вот что: Есть часть кода cout &lt;&lt; &quot;Для продолжения нажмите С: &quot;; cin&gt;&gt; exit; if (exit !=...

Обработка нажатия клавиши без подтвержения enter - C++
Здравствуйте, уважаемые программисты. Подскажите в чем проблема. Вывожу рисунок посредством команды dos в языке turbo c. Необходимо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.06.2011, 04:44 #2
getch();
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
30.06.2011, 07:33 #3
Цитата Сообщение от vortexx1 Посмотреть сообщение
В общем, погонять символ 'Q' по двумерному массиву 20 на 20.
Спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <iterator>
#include <conio.h>
 
 int main ( )
{
    char c; int i = 10, j = 10;
    char mass[20][21];
    std::fill ( &(**mass), &(**mass)+420, '*' );
     for ( int k =0; k < 20; k++ )
        mass[k][20] = '\n';
    mass[i][j] = 'Q';
    do {
      system("cls");
      copy ( &(**mass), &(**mass)+420, std::ostream_iterator< char>( std::cout));
      c = _getch( );
       switch ( c)
      {
        case 72: case 'w': if ( i >  0){ mass[i][j] = '*'; i--;}
       break;
        case 80: case 's': if ( i < 19){ mass[i][j] = '*'; i++;}
       break;
        case 75: case 'a': if ( j >  0){ mass[i][j] = '*'; j--;}
       break;
        case 77: case 'd': if ( j < 19){ mass[i][j] = '*'; j++;}
       break;
        default: ;
      }
      mass[i][j] = 'Q';
        }
    while( c!= 27); // Esc
 
   system("pause");
  return 0;
}
Как-то так =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2011, 07:33
Привет! Вот еще темы с ответами:

Как сделать ввод без enter? - C++
Есть готовый код. нужно чтобы на ввод маркера стояло ограничение. Идея:чтобы при вводе, сразу перепрыгивала на ввод искомого символа....

Проверка нажатия enter - C++
Добрый день. Подскажите, пожалуйста, как запретить в консоли при пустом вводе запретить нажатие клавиши enter? Но если пользователь что-то...

Стоп после нажатия на Enter - C++
Добрый день. У меня небольшой вопрос. Я ввожу числа через cin, разделяя их пробелами. Нужно, чтобы при нажатии на Enter ввод чисел...

Считывание чисел до нажатия Enter - C++
Нужна функция, благодаря которой цикл будет выполнятся до нажатия Enter.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru