![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
Как можно в строке удалить нечётные символы?
я пробовал вот так, но удаляется что попало
Это сообщение отредактировал(а) digitech - 25.11.2007, 18:41 |
|||
|
||||
Ofer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: нет Всего: 5 |
Получается, что ты удаляеш из строки S начиная с позиции n n символов.
Если ты хочеш удалить все нечетные цифры, то так:
Если же надо сформировать новую строку из символов, имеющих четные позиции в исходной строке, то может подойти такое:
|
||||
|
|||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
А при вот при строке s:='sdf654df8b6t5yd4h3'; прога работать не будет, так как она не сможет преобразовать латинские буквы в цифры.
Ведь в задании написано удалить символы , а не цифры. конечно и я неправильно задание написал. Нужно было: стоящие на нечётных местах. Вот код, который удаляет символы стоящие на нечётных местах. Только я не пойму, почему при inc(n) {n:=n+1} всё выполняется правильно. Хотя при каждом цыкле должна удаляться каждая цифра. По сути дела, должно быть Inc(n,2); {n:=n+2} но при этом почему-то удаляется всё что попало. Почему так происходит?
Это сообщение отредактировал(а) digitech - 25.11.2007, 18:55 |
|||
|
||||
Ofer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.10.2006 Где: КривбаСС Репутация: нет Всего: 5 |
Там есть второй код, который делает то что ты хочеш
Потому что ты удалил символ и остальная часть строки сдвинулась. Теперь символы, которые ранее были на четных позициях становеяться на нечетные. Ты увеличиваеш счетчик на единицу и снова удалеяш. Остаток строки снова сдвигается и тебе кажется, что удаление происходит через позицию. Инными словами. Имеем строку 1234567890 и n = 1. ты удалил символ с позицией n, т.е. первый, получил 234567890. Увеличил n, теперь n = 2. Удаляеш символ на второй позиции, а єто уже, как видиш, тройка. В итоге получаеш 24567890. И т.д. аж до конца строки. Теперь пнятно, что когда ты делаеш Inc(n,2) ты начинаеш прыгать через элементы строки? |
||||
|
|||||
digitech |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 1.4.2007 Репутация: нет Всего: 1 |
понял. спасибо что объснили
|
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Ну, и на кой извращаться? Обязательно вторую строку вводить? Одной уже никак?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |