1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
||||||
1 | ||||||
Поменять слова в сообщении по принципу: первое со вторым, третье с четвертым и т.д16.08.2013, 17:59. Показов 3248. Ответов 18
Метки нет Все метки)
(
Помогите, пожалуйста решить задачку с использованием класса string. Я только учусь, и меня пока плохо получается..
Поменять слова в сообщении по принципу: первое со вторым, третье с четвертым и т.д. Вот мои наработки.. Но программа зациклилась и всё убила, пришлось перезапускать компьютер.
Забыл дописать! Сообщение содержит знаки препинания, пробелы, то есть осмысленный текст, в котором также могут встречаться цифры.
0
|
|
16.08.2013, 17:59 | |
Ответы с готовыми решениями:
18
Поменять слова в строке: первое со вторым, второе с третьим, третье с четвертым
Дана строка. Поменять местами первое слово со вторым, третье с четвертым и т.д.
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||||||
16.08.2013, 18:07 | 2 | |||||
Да строку разбей на слова, слова в массив сохрани и в цикле уже так как нужно этот массив обработай. От допустим у нас 10 слов, делим слов цикл будет от нуля до 5 for(int i=0;i<5;i++).
Меняй местами элементы массива
}
0
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
16.08.2013, 18:19 [ТС] | 3 |
ninja2, а какой массив мы переводим в строку?
0
|
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
|
|
16.08.2013, 18:19 | 4 |
Здесь происходит обмен местами 1-го и последнего, 2-го и предпоследнего, А нужно 1-го и 2-го, 3-го и 4-го
0
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
16.08.2013, 19:42 [ТС] | 5 |
BigLow, точно...
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||||||
16.08.2013, 20:24 | 6 | ||||||||||
BigLow, Да чото подумал первое с последним, второе с предпоследним ошибся чуток. Тогда РВ проще использовать.
Darren_Clyde, От тебе мое элегантное решение:
Решение в 10 строк ![]()
1
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
||||||
16.08.2013, 21:51 [ТС] | 7 | |||||
ninja2, а как нам сделать, чтобы пользователь сам вводил сообщение?
Я пробую:
0
|
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
|
|
16.08.2013, 21:54 | 8 |
Darren_Clyde, а какая ошибка?
0
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
16.08.2013, 21:57 [ТС] | 9 |
ninja2, Я разобрался))) Пространство имен)) нужно было определить getline и cin в данном случае. Спасибо огромное за помощь, я очень благодарен!!
А возможно осуществить тоже самое, избегая регулярных выражений? просто боюсь такое решение мне не зачтут ![]()
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
16.08.2013, 22:19 | 10 |
Darren_Clyde, можно с помощью функций substr, replace и find или if_find, короче это очень морочно, рв сила.
Добавлено через 1 минуту Или что бы не мучится разбей строку на слова, запиши их в массив и в массиве уже поменяй нужные слова, а потом слова из массива в строку скопируй.
0
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
16.08.2013, 22:37 [ТС] | 11 |
ninja2, объясните, пожалуйста, регулярное выражение, которое вы использовали
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
16.08.2013, 23:49 | 12 |
Darren_Clyde, Отета от фигня [^ ]* соответствует любому количеству символов кроме пробела.
пробел и звездочка означает что может быть любое количество пробелов, а может быть и ни одного пробела, то что находится в скобках соответсвует любому слову ([^ ]*) между ними пробел, хотя можно было и наверно нужно поставить пробел и звездочку между ними и после последнего звездочка. Почитай про рв там просто.
2
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
16.08.2013, 23:51 [ТС] | 13 |
ninja2, спасибо огромное!!!
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
17.08.2013, 00:02 | 14 |
Darren_Clyde, Еще про скобки, это скобки сохраняющие то что у нас двое пар сохраняющих скобок и мы можем использовать то что в них сохраняется в regex_replace это переменные $1 и переменная $2 просто меняем местами в выражении "$2 $1 " и все дела, еще есть переменная $0 в ней сохраняется вся строка которая соответствует данному выражению.
Добавлено через 3 минуты можешь поэксперементировать в regex_replace "$2 $1 " заменить например на "[$0] [$1] [$2] " и посмотреть что получится.
1
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
||||||
17.08.2013, 17:09 [ТС] | 15 | |||||
ninja2, как я понял:
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
17.08.2013, 19:14 | 16 |
Там пробел и звездочка ' *' означает что перед словом может быть пробелы, а может и не быть, и после двух слов могут быть пробелы а могут не быть. А от если б был бы там пробел и знак вопроса, ' ?' то это означает что полюбому должен быть хоть один пробел.
2
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
17.08.2013, 20:23 [ТС] | 17 |
ninja2, спасибо! Я теперь понял. А пробел между двумя скобками (словами) играет какую-то роль?
0
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
17.08.2013, 20:39 | 18 |
Ну у тебя ж в тексте идет слово1 слово2 слово3 слово4 . Между слово1 и слово2 у тебя стоит пробел?. Вообще между скобками лучше поставить пробел и знак вопроса ' ?' отак чтобы обязательно был хотябы один пробел или болше, там 4 пробела мб ты случайно поставишь. Есть в РВ специальные символы \w соответсвует любому символу, и \p или я не помню точно нужно смотреть соответсвует любому пробельному символу, мб знак табуляции пробел. Я щас не сильно помню это нужно смотреть литературу по РВ и пытаться на практике делать.
Короче экспериментировать нужно.
2
|
1 / 1 / 0
Регистрация: 05.04.2013
Сообщений: 27
|
|
17.08.2013, 20:47 [ТС] | 19 |
ninja2, спасибо огромное!!
0
|
17.08.2013, 20:47 | |
17.08.2013, 20:47 | |
Помогаю со студенческими работами здесь
19
Поменять местами третье и первое слова Поменять местами первое и третье слова в тексте Поменять местами первое и второе слова,третье и четвертое и т.д. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |