2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 С++
Сообщение06.10.2010, 17:21 
Суть такая: можно ли сделать так, чтобы при работе в консоли данные вносились в комп не только после нажатия Enter, но и при нажатии Пробела?
Какой надо код написать?

 
 
 
 Re: С++
Сообщение06.10.2010, 17:47 
http://www.cplusplus.com/reference/clibrary/cstdio/getchar/

 
 
 
 Re: С++
Сообщение06.10.2010, 18:04 
Ээм, а как этот код работает? Не могли бы вы объяснить каждую строку? :)

 
 
 
 Re: С++
Сообщение06.10.2010, 18:46 
Аватара пользователя
Код:
int main ()
{
  char c;
  puts ("Enter text. Include a dot ('.') in a sentence to exit:");
// до сюда, наверно всё понятно
  do //начало цикла
  {
    c=getchar(); //читаем введёный с клавиатуры символ и загоняем его в c
    putchar (c); // печатаем этот символ
  } while (c != '.');// если символ не точка, то возвращаемся к do
//если символ точка, то выполнятся инструкции после цикла

  return 0;
}

 
 
 
 Re: С++
Сообщение06.10.2010, 19:03 
Слов puts и getchar() я совсем не знаю, ибо С++ начал изучать совсем недавно:)

Щас попробую сам объяснить, как работает код, если неправильно говорю, то поправьте, пожалуйста.

Значит, вводим текст. Например "Trololololo lololo. lolololo trololololo". Дальше с присваивается буковка "T", потом "r", потом "o" и так до тех пор, пока не встретится символ ".". И в итоге получим c=Trololololo lololo

Правильно?

 
 
 
 Re: С++
Сообщение06.10.2010, 19:26 
Аватара пользователя
Нет. Сначала вводим T, записываем это в с, потом r, опять записываем и т.д.

 
 
 
 Re: С++
Сообщение06.10.2010, 19:36 
Ну, я это и имел ввиду:)

Ладно, спасибо, что код дали и объяснили. Только я хотел получить немного другой результат:
Я хотел, чтоб в консоли можно было вводить числа не только Enter'ом, но и пробелом. Т.е. например
cin>>i;
Мы в консоли пишем 30 и нажимаем или Enter или Пробел, или еще какую-нибудь кнопочку, которую настроим.

 
 
 
 Re: С++
Сообщение06.10.2010, 19:38 
Аватара пользователя
Вместо проверки на точку сделайте проверку на пробел.

 
 
 
 Re: С++
Сообщение06.10.2010, 19:41 
Дак это же не будет работать с цифрами?
int i;
cin>>i;
Это ж не буквы...

 
 
 
 Re: С++
Сообщение06.10.2010, 21:07 
Ketsyki в сообщении #359719 писал(а):
Слов puts и getchar() я совсем не знаю, ибо С++ начал изучать совсем недавно:)
Именно поэтому я привёл ссылку на замечательный мануал к стандартной библиотеке. Достаточно было внимательно прочитать то, что там написано. Там есть описание и для puts и для всего остального.
Ketsyki в сообщении #359727 писал(а):
Т.е. например
cin>>i;
Мы в консоли пишем 30 и нажимаем или Enter или Пробел, или еще какую-нибудь кнопочку, которую настроим.

Так нельзя. Если вы хотите странного, то надо спускаться на более низкий уровень. Хотите потоки -- используйте потоки. Чтобы руками не переводить строку в число, в духе c++ используйте stringstream.

 
 
 
 Re: С++
Сообщение06.10.2010, 21:30 
Не, с puts и getchar() я разобрался.
Я просто в С++ со строками никогда не работал, у меня тут просто задача такая... Частью задачи является выделение числа из строки.
Вобщем, есть строка такого типа "(Текст(не более 20 символов)) (4 символа) (число от 10 до 99)". Пример "Бла-бла-бла ыыыы 13" И надо выделить число 13 и записать в переменную, чтоб потом с ней можно было работать. Вот выделить число я и не могу...

-- Ср окт 06, 2010 22:49:14 --

Тиха, не подсказывайте, походу, понял:)

-- Ср окт 06, 2010 22:52:51 --

Код:
string s1, s2, s3;
cin>>s1>>s2>>s3;


И это я 3 часа мучал:)

 
 
 
 Re: С++
Сообщение06.10.2010, 21:54 

(Оффтоп)

Ketsyki в сообщении #359765 писал(а):
Частью задачи является выделение числа из строки.
Не хотите попробовать boost? :wink:

 
 
 
 Re: С++
Сообщение06.10.2010, 21:58 
Вы меня не пугайте, а то мне С++ будет страшно запустить :)

Вот что получилось:
Код:
cin>>s1>>s2>>s3;
   std::string str = s3;
    int nomer = atoi(str.c_str());

 
 
 
 Re: С++
Сообщение06.10.2010, 22:21 
Ketsyki в сообщении #359778 писал(а):
Вот что получилось:
Код:
cin>>s1>>s2>>s3;
   std::string str = s3;
    int nomer = atoi(str.c_str());


Вы таки на языке це пишете или це++? Потому что если второе, то (как я упоминал выше) строчку перегонять в число концептуально правильно как-то так:
Код:
  // не забыть указать #include <sstream> где-то в начале
  std::stringstream ss(s3);
  int nomer;
  ss >> nomer;

 
 
 
 Re: С++
Сообщение06.10.2010, 23:08 
Все, написал прогу. Все еще раз спасибо.

nestoklon, я пишу на С++

 
 
 [ Сообщений: 19 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group