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

ввод - C++

Восстановить пароль Регистрация
 
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 01:30     ввод #1
прочитать целые из стандартного ввода. каждое целое должно разделятся новой срокой

немогу понять: должно разделятся новой срокой
как понять?

спасибо.

в таком коде:
C++
1
2
3
4
5
6
7
8
9
list<int> mylist;
list<int>::iterator it;
 
int data;
for(it=mylist.begin();it!=mylist.end();it++)
{
cin>>data;
*it=data;
}
Добавлено через 20 минут
uP!!!!!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tsin
 Аватар для Tsin
419 / 395 / 108
Регистрация: 30.12.2012
Сообщений: 1,086
Записей в блоге: 2
Завершенные тесты: 3
25.10.2013, 02:06     ввод #2
Цитата Сообщение от slipp1 Посмотреть сообщение
каждое целое должно разделятся новой срокой
сТрокой. Так понятнее?

Значит, что между числами должен быть разделитель - символ перевода на новую строку. Т.е. вводите цифру и жмете Enter. Программа переходит к считыванию следующего числа.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
25.10.2013, 02:11     ввод #3
Цитата Сообщение от slipp1 Посмотреть сообщение
for(it=mylist.begin();it!=mylist.end();it++)
{
cin>>data;
*it=data;
}
почему сразу не
C++
1
cin >> *it;
?
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 02:11  [ТС]     ввод #4
Цитата Сообщение от MrGluck Посмотреть сообщение
почему сразу не
Код C++
1
cin >> *it;
?
поспешил.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
25.10.2013, 02:16     ввод #5
Кстати, с итераторами надо использовать префиксный инкремент, а не постфиксный. Да, оптимизатор все исправит, но в студии вроде только с 10 такое идет, да и надеяться не стоит.
Суть в том, что с префиксным возвращается ссылка, а с постфиксным объект
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 02:20  [ТС]     ввод #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Суть в том, что с префиксным возвращается ссылка, а с постфиксным объект
то есть в первом случае присваивание... и во втором....
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
25.10.2013, 02:32     ввод #7
slipp1, присваивание и там и там, но при постфиксном варианте создается временный объект
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 02:39  [ТС]     ввод #8
Цитата Сообщение от MrGluck Посмотреть сообщение
slipp1, присваивание и там и там, но при постфиксном варианте создается временный объект
ок. спс.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
25.10.2013, 02:39     ввод #9
Рекомендую почитать Скотта Мейерса, "Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов". Там об этом в 6 правиле сказано
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
25.10.2013, 02:53     ввод #10
Цитата Сообщение от slipp1 Посмотреть сообщение
немогу понять: должно разделятся новой срокой
как понять?
Очевидно, имеется в виду нечто вроде
C++
1
2
3
4
5
6
7
8
9
10
11
12
int x;
for(int i = 0; i < 5; ++i)
{
  cout << i + 1 << ") ";
  // вводим очередное число
  if(!(cin >> x)) 
    break;
  // все остальные символы(в данном случае, не более 100), 
  // которые были введены до нажатия <ENTER> пропускаем
  cin.ignore(100, '\n'); 
  cout << "x = " << x << "\n\n";
}
slipp1
12 / 11 / 1
Регистрация: 09.11.2012
Сообщений: 365
Записей в блоге: 1
25.10.2013, 04:23  [ТС]     ввод #11
Добавлено через 2 минуты
Цитата Сообщение от rangerx Посмотреть сообщение
Очевидно, имеется в виду нечто вроде
C++
1
2
3
4
5
6
7
8
9
10
11
12
int x;
for(int i = 0; i < 5; ++i)
{
  cout << i + 1 << ") ";
  // вводим очередное число
  if(!(cin >> x)) 
    break;
  // все остальные символы(в данном случае, не более 100), 
  // которые были введены до нажатия <ENTER> пропускаем
  cin.ignore(100, '\n'); 
  cout << "x = " << x << "\n\n";
}
123пробел345пробел567enter

- что отбросится в этой последовательности пробел345пробел567...и все что попадает в диапазон 100та символов?
- где в этой последовательности впервые встречается '\n'?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2013, 04:49     ввод
Еще ссылки по теме:

Как правильно заменить ввод данных простой на ввод с клавиатуры? C++
C++ Потоковый ввод и ввод данных. Работа с числами
C++ Скрыть ввод в консоле ввод записи?

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
25.10.2013, 04:49     ввод #12
Цитата Сообщение от slipp1 Посмотреть сообщение
- что отбросится в этой последовательности пробел345пробел567...и все что попадает в диапазон 100та символов?
Отброшены будут пробел345пробел567\n. Т.е. отбрасываться будут все символы либо пока не встретится '\n', либо пока их количество не станет равно 100.
Цитата Сообщение от slipp1 Посмотреть сообщение
- где в этой последовательности впервые встречается '\n'?
Там, где вы нажимаете <ENTER>
Yandex
Объявления
25.10.2013, 04:49     ввод
Ответ Создать тему
Опции темы

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