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

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

Войти
Регистрация
Восстановить пароль
 
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
#1

ввод - C++

25.10.2013, 01:30. Просмотров 375. Ответов 11
Метки нет (Все метки)

прочитать целые из стандартного ввода. каждое целое должно разделятся новой срокой

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

спасибо.

в таком коде:
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!!!!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2013, 01:30     ввод
Посмотрите здесь:

Ввод массива в С C++
ЗАПРЕТ на ввод Б У К В Ы ... ... ... C++
пустой ввод C++
C++ Файловый ввод
Ввод cin C++
Ввод кириллицы в С++ C++
C++ ввод
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tsin
701 / 446 / 125
Регистрация: 30.12.2012
Сообщений: 1,214
Записей в блоге: 2
Завершенные тесты: 3
25.10.2013, 02:06     ввод #2
Цитата Сообщение от slipp1 Посмотреть сообщение
каждое целое должно разделятся новой срокой
сТрокой. Так понятнее?

Значит, что между числами должен быть разделитель - символ перевода на новую строку. Т.е. вводите цифру и жмете Enter. Программа переходит к считыванию следующего числа.
MrGluck
Ворчун
Эксперт CЭксперт С++
6615 / 3806 / 495
Регистрация: 29.11.2010
Сообщений: 10,044
25.10.2013, 02:11     ввод #3
Цитата Сообщение от slipp1 Посмотреть сообщение
for(it=mylist.begin();it!=mylist.end();it++)
{
cin>>data;
*it=data;
}
почему сразу не
C++
1
cin >> *it;
?
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
25.10.2013, 02:11  [ТС]     ввод #4
Цитата Сообщение от MrGluck Посмотреть сообщение
почему сразу не
Код C++
1
cin >> *it;
?
поспешил.
MrGluck
Ворчун
Эксперт CЭксперт С++
6615 / 3806 / 495
Регистрация: 29.11.2010
Сообщений: 10,044
25.10.2013, 02:16     ввод #5
Кстати, с итераторами надо использовать префиксный инкремент, а не постфиксный. Да, оптимизатор все исправит, но в студии вроде только с 10 такое идет, да и надеяться не стоит.
Суть в том, что с префиксным возвращается ссылка, а с постфиксным объект
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
25.10.2013, 02:20  [ТС]     ввод #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Суть в том, что с префиксным возвращается ссылка, а с постфиксным объект
то есть в первом случае присваивание... и во втором....
MrGluck
Ворчун
Эксперт CЭксперт С++
6615 / 3806 / 495
Регистрация: 29.11.2010
Сообщений: 10,044
25.10.2013, 02:32     ввод #7
slipp1, присваивание и там и там, но при постфиксном варианте создается временный объект
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
25.10.2013, 02:39  [ТС]     ввод #8
Цитата Сообщение от MrGluck Посмотреть сообщение
slipp1, присваивание и там и там, но при постфиксном варианте создается временный объект
ок. спс.
MrGluck
Ворчун
Эксперт CЭксперт С++
6615 / 3806 / 495
Регистрация: 29.11.2010
Сообщений: 10,044
25.10.2013, 02:39     ввод #9
Рекомендую почитать Скотта Мейерса, "Наиболее эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов". Там об этом в 6 правиле сказано
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
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
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 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++ Ввод
Ввод в С++ C++
Ввод до нуля C++
Ввод числа Пи C++

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

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

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