|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.04.2012, 22:25 | #1 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 12
|
строки
Дана символьная строка. Слово – последовательность символов
между пробелами, не содержащая пробелы внутри себя. Составьте программу для решения следующей задачи: Отредактировать заданное предложение, удаляя из него слова с нечетными номерами и переворачивая слова с четными (например, how do you do --> od od). |
20.04.2012, 22:27 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну а в чем проблема? - разделить строку на слова или поудалять из нее лишние?
I'm learning to live...
|
20.04.2012, 23:00 | #3 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 109
|
Не знаю разберёшься ли в моём коде, но прога работает:
Код:
|
20.04.2012, 23:19 | #4 |
a.k.a. Skull
Форумчанин
Регистрация: 17.11.2009
Сообщений: 963
|
Долго думал вот над этим:
Код:
А вообще верно, я бы даже заморачиваться из-за одного пробела в конце не стал. Ссылку дал на всякий случай, а то вдруг подумаешь, что оскорбить пытался
Все тривиальное просто
|
21.04.2012, 06:49 | #5 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Я извиняюсь за вторжение в разговор.. Надеюсь, код Куя действительно работает (не проверял), но я все же сделал бы иначе . Задача легко распадается на составные части, поэтому и воплощать ее надо в том же духе, мне кажется. Короче, вот код - судите сами.. ))
Код:
Предпочитаю на "ты".
Последний раз редактировалось TinMan; 22.04.2012 в 05:12. |
22.04.2012, 05:25 | #6 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Эта маленькая бяка не давала мне покоя.. )) Сегодня была свободная минутка - и я сделал это!!
Ни одной переменой ВООБЩЕ - только параметры функций (причем, не липовые!)) Любуйтеся, ежели кому есть дело.. )) Код:
P.S. Еще один момент.. Можно ли полагаться на то, что обработка в сумме строк идет справа налево? Если заменить сумму на Concat, то получается то же самое, кстати. Ктонть скажет ченть по этому поводу?.. Карпинский, а?
Предпочитаю на "ты".
|
22.04.2012, 10:19 | #7 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
А как Вы считаете, хороший ли это стиль, когда результат может зависеть от того, как та или иная функция реализована в компиляторе?
Да, проверил на своем компиляторе (TMT Pascal 4.01), 3 строки : первая "'how do you do and what you drink now'", вторая "'zero one two three four five six seven eight nine ten elleven twelve '", третья "' '+'zero one two three four five six seven eight nine ten elleven twelve'". 1 вариант (от kuy): "od od tahw" "orez ruof evif enin evlewt" "orez ruof evif enin evlewt" 2 вариант (от TinMan): " RunError #202 at 00402AB0" " orez ruof evif enin evlewt" " RunError #202 at 00401940 " 3 вариант (от TinMan): " RunError #202 at 004029F0 " " RunError #202 at 004029F0 " " RunError #202 at 004029F0 " Последний раз редактировалось s-andriano; 22.04.2012 в 10:43. |
22.04.2012, 11:20 | #8 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
Цитата:
Хороший стиль - это наплодить как можно больше дубовых (с разных точек зрения) решений, завалить ими форум и сделать жизнь предельно нудной и скучной )). Сан-Андриано, я не претендовал на 100%-ную надежность предложенного кода. Я пытался показать коллегам, что бывает что-то другое тоже (кроме циклов)) и вызвать их на разговор. И, похоже,. преуспел.. Дыр в моем решении до фига, критики оно не выдержит никакой. Но, надеюсь, кому-то расширит кругозор.. )) TNT, говоришь? Давненько я с ним не сталкивался.. Спасибо за инфу, поисследую (когда поставлю).
Предпочитаю на "ты".
|
|
22.04.2012, 16:25 | #9 |
Пользователь
Регистрация: 15.03.2012
Сообщений: 12
|
ребята шикарно! спасибо всем , вы молодцы)))
|
23.04.2012, 20:57 | #10 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Выходит, все остались довольны друг другом и собой. Цитата:
Вообще говоря, вполне ВОЗМОЖНО писать программы, которые будут работать при любом компиляторе. Ну, точнее, алгоритмы. С другой стороны, традиционно принято уделять внимание оптимизации алгоритмов и программ. Нужно только IMHO уметь отделять оптимизацию от "оптимизации". В данном случае, если бы стояла задача ТОЛЬКО выбросить часть слов, то это можно было бы сделать на месте, не прибегая к дополнительной памяти. Но вот когда требуется что-то частично перевернуть, без дополнительной памяти не обойтись в принципе. И в этом случае ИЛЛЮЗИЯ неиспользования дополнительной памяти может быть достигнута лишь некоторым насилием над компилятором и использованием его недокументированных возможностей, что автоматически приводит к непереносимости кода. По сути в предложенном решении используется не просто дополнительная память, но дополнительный МАССИВ, имеющий размер обрабатываемого массива (строка массив символов), т.е. решение имеет требование по памяти O(N). А ту же самую задачу можно решить, используя лишь несколько простых переменных, т.е. требование по памяти O(1). И при этом быть переносимым. Т.е. оптимизация IMHO состоит не в том, чтобы "спрятать" использование массива, а в том, чтобы без него реально обойтись. PS. Да уж, "вызов на разговор" удался. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки | Алексей_2012 | Помощь студентам | 1 | 05.04.2012 11:26 |
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности | kris__tina | БД в Delphi | 1 | 09.06.2011 15:31 |
Создание пустой строки и копирование в неё содержимое предыдущей строки | Gvaridos | Microsoft Office Excel | 2 | 29.10.2010 13:33 |
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. | Александе еть я | Общие вопросы C/C++ | 5 | 13.04.2010 20:54 |
Перенести символа с начала строки в место перед запятой этой же строки. | Zhiltsov | Microsoft Office Excel | 4 | 05.06.2009 13:10 |