|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.03.2015, 22:01 | #1 |
Регистрация: 14.03.2015
Сообщений: 6
|
Равномерное распределение пробелов
Здравствуйте. Помогите с программой. Она должна равномерно расставить пробелы между словами, пока длина строки не будет равняться 80 символов. Сначала я отнял от 80 длину начальной строки и поделил на кол-во слов(то есть узнал, сколько пробелов нужно поставить между каждым словом(пометим его как x).
Затем я открываю цикл со счётчиком. При нахождении пробела он добавляет ещё x пробелов. Но когда он снова проганяет его через цикл, он снова видит пробел(который мы добавили). И так он добавляет пробелы в одно и тоже место, пока цикл не закончится. А мне нужно равномерное расставление пробелов. Код:
Последний раз редактировалось dimonsnakes; 14.03.2015 в 23:02. |
15.03.2015, 00:00 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Тут проблема в алгоритме.
Сделай вставку через вспомогательную строку. В эту строку копируешь символы до пробела, затем добавляешь в цикле нужное число пробелов, затем продолжаешь копировать следующее слово и т.д. В принципе, можно делать вставку и в ту же строку, вот только тогда нужно, после обнаружения пробела, сохранить позицию, выполнить вставку пробелов в строку и продолжить поиск конца следующего слова с сохраненной позиции плюс число добавленных пробелов. В этом случае, кстати, цикл for не пройдет: можно с while или repeat. Как-то так, ...
Как-то так, ...
|
15.03.2015, 01:33 | #3 |
Регистрация: 14.03.2015
Сообщений: 6
|
Алгоритм я понял, но как копировать символы до пробела, затем вставить пробелы, ну и так далее. Я могу через символьную переменную циклом вставить слово до пробела, потом пробелы, а дальше как? Если повторять, то циклу надо начинать уже с того места, где закончили последний раз.
А если вторым способом, то как "сохранить позицию" счетчика? |
15.03.2015, 10:44 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Делай цикл for от конца к началу и все проблемы с индексом обнулятся. Еще не помешало бы не просто считать количество слов, а и заменить все сдвоенные пробелы на одинарные и удалить пробелы в начале и конце предложения. Да, и вставлять между словами придется разное количество пробелов, нацело у тебя скорее всего не разделится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 15.03.2015 в 10:47. |
15.03.2015, 21:08 | #5 |
Регистрация: 14.03.2015
Сообщений: 6
|
Через цикл for не получается, как я уже говорил,когда идёт цикл, и программа находит пробел, она добавляет его. Индекс соответственно сдвигается, и программа снова добавляет x пробелов, пока не достигнет 80 символов. Получается, остаётся только первое слово, а после него одни пробелы, т.к. пробелы вытесняют остальные слова(в объявлении переменных на строковой переменной ограничение (s:string[80])).
|
15.03.2015, 21:28 | #6 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
15.03.2015, 22:19 | #7 |
Регистрация: 14.03.2015
Сообщений: 6
|
Спасибо вам большое! А что делает StringOfChar?
А, всё, разобрался. Спасибо. Последний раз редактировалось dimonsnakes; 15.03.2015 в 22:29. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Равномерное распределение точек в круге | Arigato | Мультимедиа в Delphi | 12 | 23.11.2014 23:11 |
Равномерное распределение (алгоритм) | Honr | Помощь студентам | 4 | 14.07.2013 16:19 |
Равномерное увеличение значения ячейки | Kvint_Sertoriy | Microsoft Office Excel | 6 | 13.10.2012 14:06 |
Сложение объектов и равномерное распределение их последовательности | Tarkh | PHP | 1 | 23.12.2009 20:16 |