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

Ввод чисел клавишей пробел - C++

Восстановить пароль Регистрация
 
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
04.04.2014, 00:10     Ввод чисел клавишей пробел #1
Доброго всем времени суток.Подскажите пожалуйста как клавишей "пробел" вводить числа так же как и клавишей "enter" у меня ничего не получается.
C++
1
2
3
4
5
6
7
8
9
10
11
12
  double  D;
   char ch;
 //ch = GetAsyncKeyState(VK_SPACE);
    cout << "\t Enter D \n";
    cin >> D;
    if(GetAsyncKeyState(VK_SPACE))//нажата кнопка пробел
    {
     //ch = _getch();
     keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
     //ch = '\n'; //GetAsyncKeyState(VK_RETURN);
     cout <<D<<"\n";
    }
это мои не удачные попытки не единственные.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mymedia
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
04.04.2014, 00:32     Ввод чисел клавишей пробел #2
Что-то я не понял, чего ты хотел. При стандартном вводе в консоли оператор >> по умолчанию разделяет числа пробельными символами. А если ты хочешь, чтобы текст не переводился на новую строчку, то, на мой взгляд, проще использовать графический интерфейс
Правда есть как вариант не использовать поток cin, а отслеживать с помощью WindowsAPI нажатые клавиши и печатать символы, им соответсвующие. Но это будет уже велосипед какой-то

Добавлено через 3 минуты
попробуй использовать функцию getche(), которая печатает вводимые символы

Добавлено через 6 минут
Наверное, как-то так. Осталось только допилить напильником и учесть, что цифры ещё могут вводиться с цифровой клавиатуры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int T = 0;
int dig = 0;
int ch = 0;
while(1)
{
  ch = getche();
  if(ch >= '0' and ch <= '9')
  {
    dig += ch-'0' + T;
    T *= 10;
  }
  else if(ch == ' ') break;
}
// используем dig
// …
P.S.: но, на мой взгляд, лучше использовать GUI !!
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
04.04.2014, 00:39  [ТС]     Ввод чисел клавишей пробел #3
Попалась вроде простая задачка посчитать бесконечную последовательность,но условие выводить результат вычислений однократным нажатием клавиши "enter" сочетание "Cttrl +Z"не использовать.Сам цикл работает и выходит при нажатии "enter",а вот как записать вводимое число в переменную не могу сообразить.Вот у меня и появилась мысль использовать клавишу "пробел".Подобное делал со стрелками все работает,а тут что то не доходит.
mymedia
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
04.04.2014, 01:13     Ввод чисел клавишей пробел #4
ошибочка: 1 строка - int T = 1;
9 строка - dig += (ch-'0') * T;

Добавлено через 6 минут
Аааа. Я думал, тебе надо ещё что-то вывести в той же строке. Тогда следует в цикле обрабатывать входной поток посимвольно
C++
1
2
3
4
5
6
7
char ch;
while(cin.get(ch))
{
  if(ch == '\n') break;
  // ввод + обработка
}
// ещё обработка и вывод
Добавлено через 9 минут
например, посчитать сумму всех введёных чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cctype>
#include <iostream>
int main()
{
  using namespace std;
  char ch;
  int sum = 0;
  while(cin.get(ch))
  {
    if(ch == '\n') break;
    else if(!isspace(ch))
    {
      cin.putback(ch);
      int dig;
      cin >> dig;
      sum += dig;
    }
  }
  cout << "Сумма чисел: " << sum << endl;
}
Добавлено через 17 минут
Честно говоря, я не очень понял, в каком виде ты хочешь вводить (выводить) данные.
Получается, если тебе не нужно выводить какой-либо текст на той же строчке, где пользователь ввёл данные, то можно спокойно положиться на функции форматного ввода. Дело в том, что как только поток обращается к буферу (клавиатуры), программа приостанавливает свою работу до нажатия пользователем кнопки ВВОД. Затем программа читает поток, начиная с первого введённого пользователем символа.
Если такое поведение неприемлемо, то работу программы следует приостанавливать до считывания одного символа (например, с помощью getech или getche), а затем в той же строчке печатать.
Нет смысла использовать getech или getche, если ты потом всё равно перед выводом текста напечатаешь перевод строки
mymedia
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
04.04.2014, 01:19     Ввод чисел клавишей пробел #5
Вот как выглядит вывод той программы
Миниатюры
Ввод чисел клавишей пробел  
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
04.04.2014, 01:38  [ТС]     Ввод чисел клавишей пробел #6
Не совсем то,что нужно.Но если подумать,то наверное можно и так.Считать нужно так sum += n * k;
n и k нужно вводить через пробел,а сумму получать нажатием кнопки "enter"

Добавлено через 2 минуты
Вводятся вещественные числа.
Yandex
Объявления
04.04.2014, 01:38     Ввод чисел клавишей пробел
Ответ Создать тему
Опции темы

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