| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Помогите решить задачу на строки |
| Автор: Azadof 1.5.2009, 22:41 |
| Помогите пожалуйста решить задачу на строки с таким условием: Дана последовательность, содержащая от 1 до 30 слов. Слова разделены одним или несколькими пробелами. За последним словом – точка. Напечатать эту же последовательность слов, но в обратном порядке. |
| Автор: azesmcar 1.5.2009, 23:07 | ||
А вообще в центр помощи с таким вопросами |
| Автор: toxx 1.5.2009, 23:12 |
| блин ступил-_- |
| Автор: Dmi3ev 1.5.2009, 23:34 | ||
|
| Автор: mes 2.5.2009, 10:41 |
azesmcar, a задача то - изменить порядок слов, а не инвертировать каждое слово |
| Автор: azesmcar 2.5.2009, 10:48 | ||||
mes
Возможно вы правы, но не сочетается |
| Автор: stat007 2.5.2009, 11:34 | ||
самый оптимальный вариант:
|
| Автор: mes 2.5.2009, 11:37 |
имхо, "в обратном порядке" относится к слову последовательность, т.е. если последовательность 1;2;3;4;5;6, то она же в обратном порядке будет 6;5;4;3;2;1 но точно сказать, что хотел автор, может лишь автор напросилась аналогия : лучше гор могут быть только горы...©Высоцкий Добавлено через 2 минуты и 28 секунд |
| Автор: stat007 2.5.2009, 11:53 | ||
Верно. Просто я понял его так.. |
| Автор: Dmi3ev 2.5.2009, 13:10 |
| Я думаю, что задача была такая Допустим строка на входе: Я пошел гулять. На выходе: гулять пошел Я. Потому как просто перевернуть строку можно с помощью strrev() и скорее всего задача заключалась в изменении порядка слов (при этом сами слова изменять не нужно было)... Хотя автору виднее... Я решил именно эту задачу... Я так это все понял... |
| Автор: zim22 2.5.2009, 15:01 | ||
я тоже так думаю. Я бы её так решил, хотя вариант azesmcar мне больше нравится.
|
| Автор: Dmi3ev 2.5.2009, 16:10 |
| А я бы ее решил, как решил, хотя все варианты нормальные |
| Автор: azesmcar 2.5.2009, 17:53 | ||||
| zim22 А почему не через reverse_iterator?
Добавлено через 6 минут и 16 секунд Ну если нужен ввод с клавиатуры - тут вообще писать нечего
|
| Автор: zim22 2.5.2009, 21:39 | ||||
не подумал об этом. Я не понимаю одного, почему используя функцию assign вектору успешно присваиваются значения из istringstream:
А прямая инициализация в конструкторе вектора не работает... Хотя и там и там передаётся пара итераторов.
|
| Автор: Azadof 2.5.2009, 21:47 |
| Ребята! Огромное всем спасибо! Имелось ввиду, что только слова переставить : Всем Привет - Привет Всем. Вот так, сори что сразу не предупредил, не знал, что будут разногласия!)))))) |
| Автор: azesmcar 2.5.2009, 22:19 | ||||||
zim22
аааа Потому что вот это
не вызов конструктора класса std::vector, это обявление прототипа функции по имени data, возвращающей std::vector<std::string> и принимающей два параметра типа std::istream_iterator<std::string> с именем формального параметра is и вторую, того же типа но без имени..скобки игнорируются. (подробнее см. в книге Герб Саттер - Решение новых сложных задач на С++). А заставить работать это безобразие - проще простого. Просто взять в скобки.
Добавлено @ 22:20 Azadof помечайте тему решенной если вопросов больше нет. |
| Автор: zim22 2.5.2009, 23:09 |
супер! очень интересно! |
| Автор: azesmcar 2.5.2009, 23:14 | ||
| zim22 Вообще общее правило - Если что-то может быть интерпретировано как обявление, значит это обявление. В стандарт добавили это правило для обратной совместимости с С. Добавлено @ 23:16 кстати - студия 2008 (насчет ранних версий не уверен) выдает варнинг
Распространенная ошибка однако |
| Автор: bsa 2.5.2009, 23:30 | ||
Очень сомневаюсь, что она распространенная. Я, например, только один раз нарывался на нее. С другой стороны, ошибка крайне сложно определяемая. Особенно, для тех, кто еще на ней шишек не набил. |