![]() |
|
Модераторы: bsa |
![]()
|
|
| JAYBE |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.3.2008 Репутация: нет Всего: 0 |
Добрый день.
Необходимо получить массив положительных чисел с клавиатуры. Я сделал пока так:
Подскажите, как доделать данную реализацию и если есть более профессиональный подход, то покажите мне его. |
|||
|
||||
| shuttle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.4.2008 Репутация: нет Всего: нет |
--------------------
|
|||
|
||||
| NoviceF |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
наверно, вернее будет так (во всяком случае так компилируется
Вот у меня вопрос, как задать условия выхода из чтения из cin? Это сообщение отредактировал(а) NoviceF - 25.12.2012, 23:23 |
||||||
|
|||||||
| shuttle |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.4.2008 Репутация: нет Всего: нет |
да действительно удалять из std::list надо так
я еще ошибку допустил - забыл скобки вокруг первого аргумента конструктора
вот так правильно. Это сообщение отредактировал(а) shuttle - 26.12.2012, 14:56 --------------------
|
||||
|
|||||
| shuttle |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 9.4.2008 Репутация: нет Всего: нет |
В данном случае нажимаешь ctrl+z чтобы пректратить ввод. --------------------
|
|||
|
||||
| JAYBE |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.3.2008 Репутация: нет Всего: 0 |
А можно разъяснить принцип работы?
Для старта немного непонятно почему именно таким образом... |
|||
|
||||
| NoviceF |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
пример выше предоставлю прокомментировать автору, а вот рабочий код, правда на профессионализм не претендую В массив размером collsize принимаем цифры из консоли, удаляем отрицательные значения, выводим в консоль, что осталось.
тут используется STL контейнеры, алгоритмы, итераторы и лямбда функции: http://cplusplus.com/reference/list/list/ http://cplusplus.com/reference/algorithm/for_each/ http://cplusplus.com/reference/algorithm/copy/ http://cplusplus.com/reference/iterator/ostream_iterator/ http://ru.wikipedia.org/wiki/C%2B%2B11#.D0....BD.D0.B8.D1.8F но, если не всё понятно с лямбдами, перед ними лучше ознакомиться с указателями на функцию и функциональными объектами (функторами). |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Сначала производится копирование чисел из стандартного потока ввода в список. Затем производится удаление "лишнего".
Ты просил профессиональный подход, ты его получил. Если бы данных было очень много, то возможно имелся бы смысл проверять еще при вводе. Но у тебя их мало, поэтому можно делать как проще. Если тебе хочется, чтобы ввод завершался клавишей Enter, то можно поступить так:
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ввод и последующее удаление можно объединить в одну операцию.
Тогда список сразу примет нужный вид, без лишних выделений памяти и пробегов.
|
|||
|
||||
| JAYBE |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 27.3.2008 Репутация: нет Всего: 0 |
Спасибо. Сделал так:
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |