2014 dxdy logo

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

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




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


01/10/10
97
Суть такая: можно ли сделать так, чтобы при работе в консоли данные вносились в комп не только после нажатия Enter, но и при нажатии Пробела?
Какой надо код написать?

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 17:47 
Заслуженный участник


19/07/08
1266
http://www.cplusplus.com/reference/clibrary/cstdio/getchar/

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 18:04 


01/10/10
97
Ээм, а как этот код работает? Не могли бы вы объяснить каждую строку? :)

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 18:46 
Аватара пользователя


03/03/10
1341
Код:
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 


01/10/10
97
Слов puts и getchar() я совсем не знаю, ибо С++ начал изучать совсем недавно:)

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

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

Правильно?

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 19:26 
Аватара пользователя


03/03/10
1341
Нет. Сначала вводим T, записываем это в с, потом r, опять записываем и т.д.

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 19:36 


01/10/10
97
Ну, я это и имел ввиду:)

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

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 19:38 
Аватара пользователя


03/03/10
1341
Вместо проверки на точку сделайте проверку на пробел.

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 19:41 


01/10/10
97
Дак это же не будет работать с цифрами?
int i;
cin>>i;
Это ж не буквы...

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 21:07 
Заслуженный участник


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

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

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 21:30 


01/10/10
97
Не, с 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 
Заслуженный участник


19/07/08
1266

(Оффтоп)

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

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 21:58 


01/10/10
97
Вы меня не пугайте, а то мне С++ будет страшно запустить :)

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

 Профиль  
                  
 
 Re: С++
Сообщение06.10.2010, 22:21 
Заслуженный участник


19/07/08
1266
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 


01/10/10
97
Все, написал прогу. Все еще раз спасибо.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 19 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group