|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.12.2014, 01:04 | #1 |
Пользователь
Регистрация: 19.10.2014
Сообщений: 49
|
Delphi,как поменять слова в array of char местами
Уважаемые форумчане,мне очень нужна ваша помощь.Буду честен, завтра у меня кр по программированию,где будут две задачи,одна на матрицу(знаю как решать) , другая на "array of char".
И в процессе подготовки к данной контрольной,я пробую решить задачу: Текст состоит из слов,разделенных одним или несколькими пробелами.Поменять местами слова в тексте по следующему принцепу: первое- на последнее, второе - на предпоследнее и т.д. Честное слово,никак не могу понять,как произвести обмен. Пытался производить обмен переменных,пока i-тый элемент массива равен нулю,а в случае если равен,то увеличивать i. Пытался определять границы слова ,которое стоит в начале и слова которое стоит в конце,а потом менять их местами, но тоже ничего не вышло. Возможно идеи ,приведенный выше -сущий бред.Но мне правда очен важно понять,как произвести обмен.Хотя бы словами алгоритм напишите пожалуйста,но конечно лучше процедурой или функцией. Заранее огромнейшее спасибо. |
25.12.2014, 01:19 | #2 | |
Заблокирован
Регистрация: 24.11.2014
Сообщений: 721
|
Цитата:
|
|
25.12.2014, 08:52 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
если же нет, тогда задача перестаёт быть тривиальной. По сути, поменять два "слова" в массиве - это поменять местами две ГРУППЫ (последовательности) элементов массива, в общем случае РАЗЛИЧНОЙ длины. для этого нужно найти индексы начала первой группы для переноса и индекс конца группы, потом нужно найти индексы начала и окончания второй группы и потом выполнить СЛОЖНУЮ процедуру по сдвигу остальных элементов массива в зависиомсти от разныцы размеров двух этих групп. Если допустимо использовать обычную String, тогда можно решить задачу с использованием строковых функций (array of char элементарно скопировать в строку и строку -> array of char) |
|
25.12.2014, 08:55 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Непосредственно в исходном массиве менять крайне неудобно. Можно выгрузить из него все слова в стринговый массив слов, потасовать его как нужно и обратно в новом порядке слова выгрузить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
25.12.2014, 09:15 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
1. Переворачиваем весь массив без оглядки на слова. теперь "слова" в нужном порядке, но вот ведь незадача они совершенно не те, а наоборотные(задом наперед). 2. выделяем "слова" и переворачиваем каждое "слово" в отдельности.
программа — запись алгоритма на языке понятном транслятору
|
|
25.12.2014, 09:47 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Мне такая идея даже в голову не пришла! Респект! |
|
29.12.2014, 07:45 | #7 |
Пользователь
Регистрация: 19.10.2014
Сообщений: 49
|
Спасибо огромное)
|
29.12.2014, 11:50 | #8 |
Заблокирован
Регистрация: 24.11.2014
Сообщений: 721
|
Честно говоря такой метод ужасен. Переворачивать побуквенно один раз, потом второй... И в обоих разах нужен буферный char, чтоб заменяемый символ не затереть... Проще уж найти все разделители, и скопировать пословно весь текст в нужном порядке в новый массив. Это в том случае, если TStringList нельзя использовать (работа чисто с символами).
|
29.12.2014, 12:10 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
29.12.2014, 12:21 | #10 | ||
Заблокирован
Регистрация: 24.11.2014
Сообщений: 721
|
Stilet А ни чего, что твой метод не соответствует описанному, и ты в итоге не переворачиваешь буквы в слове?
Цитата:
Цитата:
Последний раз редактировалось WinCoder; 29.12.2014 в 12:23. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
поменять местами слова в предложении (C++) | Slicker | Общие вопросы C/C++ | 15 | 10.03.2011 10:17 |
поменять соседние слова местами | alex(21) | Общие вопросы C/C++ | 3 | 20.02.2011 16:28 |
Поменять слова в строке местами | fen1ksss | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 28.11.2010 22:25 |
поменять местами слова в предложении (C++) | Slicker | Помощь студентам | 3 | 30.05.2009 17:57 |
как поменять местами слова в файле? | r-tem | Общие вопросы C/C++ | 6 | 01.12.2008 22:17 |