Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Genn55
372 / 219 / 41
Регистрация: 26.12.2012
Сообщений: 718
#1

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

04.04.2014, 00:10. Просмотров 1062. Ответов 5
Метки нет (Все метки)

Доброго всем времени суток.Подскажите пожалуйста как клавишей "пробел" вводить числа так же как и клавишей "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";
    }
это мои не удачные попытки не единственные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 00:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод чисел клавишей пробел (C++):

Ввод чисел через пробел - C++
Доброго времени суток! Подскажите как правильно сделать. Есть односвязный список. Нужно вводить числа через пробел, а по нажатию на Enter...

Ввод чисел пользователем через пробел - C++
Есть задача, где пользователь вводит количество годов, а на следующей строке перечисляет эти года через пробел. ( Например, 4 года : 2012...

Ввод одной клавишей - C++
Не как не могу найти такую функцию, помню на каком-то С был прототип (getch()) но на Visual C++ такой не обьявляется. Если что, то я имею...

Ввод чисел через пробел до определеного числа,убрать оставшиеся числа - C++
Нужно ввести числа через проблем, набор заканчиваеться числом меньше или равно нулю. Пример: 1 2 3 -1 5 6 7 (занести нужно будет...

Ввод массива через пробел - C++
Есть массив int С, и есть строка string S, у строки S есть длинна S.size(), следовательно кол-во элементов в массиве должно соответствовать...

Ввод переменных через пробел в одну строку - C++
на олимпиаде по информатике сегодня лажанулся капец как... хотел написать все на c++, пришлось писать на паскальке. там практически во всех...

5
mymedia
192 / 192 / 48
Регистрация: 27.05.2011
Сообщений: 544
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 !!
0
Genn55
372 / 219 / 41
Регистрация: 26.12.2012
Сообщений: 718
04.04.2014, 00:39  [ТС] #3
Попалась вроде простая задачка посчитать бесконечную последовательность,но условие выводить результат вычислений однократным нажатием клавиши "enter" сочетание "Cttrl +Z"не использовать.Сам цикл работает и выходит при нажатии "enter",а вот как записать вводимое число в переменную не могу сообразить.Вот у меня и появилась мысль использовать клавишу "пробел".Подобное делал со стрелками все работает,а тут что то не доходит.
0
mymedia
192 / 192 / 48
Регистрация: 27.05.2011
Сообщений: 544
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, если ты потом всё равно перед выводом текста напечатаешь перевод строки
1
mymedia
192 / 192 / 48
Регистрация: 27.05.2011
Сообщений: 544
04.04.2014, 01:19 #5
Вот как выглядит вывод той программы
0
Миниатюры
Ввод чисел клавишей пробел  
Genn55
372 / 219 / 41
Регистрация: 26.12.2012
Сообщений: 718
04.04.2014, 01:38  [ТС] #6
Не совсем то,что нужно.Но если подумать,то наверное можно и так.Считать нужно так sum += n * k;
n и k нужно вводить через пробел,а сумму получать нажатием кнопки "enter"

Добавлено через 2 минуты
Вводятся вещественные числа.
0
04.04.2014, 01:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2014, 01:38
Привет! Вот еще темы с ответами:

Вводи чисел с клавиатуры через пробел - C++
Доброго времени суток. Столкнулся с такой проблемой: надо вводить цифры через пробле,при этом не знаю сколько их может быть. Как это можно...

Считывание чисел с консоли через пробел - C++
Все же С++ - странный язык... Гуглил, но не нашел нормального способа считать определенное количество чисел, введенных через пробел. ...

Каждую группу из n последовательно стоящих символов ‘’ (пробел) и '\t' (табуляция) заменить на один пробел - C++
Каждую группу из n последовательно стоящих символов ‘’ (пробел) и '\t' (табуляция) заменить на один пробел

В строке заменить пробел между слов на запятую и пробел - C++
В строке заменить пробел между слов на запятую и пробел


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

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

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