![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Надо удвоить все символы во введенной строке. Я писал так:
Я знаю, тут есть ошибка. Она состоит в том, что длина строки с Инсертом символа увеличивается тоже на 1, поэтому добавляется тот же символ, что и раньше. Я только не догадался, как же эту ошибку исправить? Добавлено @ 18:57 Так. Немного поправок - и я ближе к цели. Не удваиваются только первые две буквы. Почему?
Это сообщение отредактировал(а) sim7 - 2.9.2005, 18:54 |
||||
|
|||||
| volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
sim7,
попробуй, так не проще?
Ну, или твой же (чуть подправленный) вариант:
Это сообщение отредактировал(а) volvo877 - 2.9.2005, 19:35 |
||||
|
|||||
| dvamaster |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: нет Всего: 10 |
Зачем использвать FOR если можно проще, а FOR тормоз каких еще поискать.
Хотя мне понравилось у volvo877 Теперь подражая ему:
А так будет быстрее, но это применимо только на практике, а для решения задачек... думаю была поставлена задача изменить существующую строку (без использвания потусторонних):
-------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
У меня получилось еще и так (как вариант):
|
|||
|
||||
| volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
sim7,
вот это ты зря делаешь:
вообще-то крайне нежелательно изменять параметр цикла внутри самого цикла:
|
||||
|
|||||
| dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: нет Всего: 10 |
В Делфе 7 подобная ошибка отлавливается компилятором, очень удобно!
Почему бы не создать оболочку более интуитивную под паскаль. А INC(i) всеже быстрее, чем i := i + 1, теперь спасет только ASM -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
А почему это является ошибкой, если у меня все работает?
|
|||
|
||||
| volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
То, что это у тебя работает, еще не значит, что так можно делать (dvamaster уже упоминал, что Delphi 7 например, не даст скомпилировать такую программу. FPC по-моему, тоже выдает предупреждение). А нельзя изменять переменную цикла For вот почему:
Попробуй ответить НЕ запуская программу, сколько значений будет распечатано? А потом запусти ее, и посмотри, что происходит. |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Я думаю, будет напечатано 3 значения. Сначала идет инкремент на 3, а также увеличение на 1 в цикле for, значит, следующая итерация произойдет при i:=5. Дальше снова инкремент на 3, затем на 1, итерация при i:=9. Дальше значение i выйдет за пределы 10, и цикл прервется.
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Цикл НЕ прерывается, в этом-то вся проблема !!! Печатаются значения <13, 17, 21, ... > и т.д. - пока тебе не надоест, и ты не прервешь выполнение программы через Ctrl + Break. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |