Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Object Pascal: кроссплатформенные технологии > Как удалить нечётные символы |
Автор: digitech 25.11.2007, 17:00 | ||
Как можно в строке удалить нечётные символы? я пробовал вот так, но удаляется что попало
|
Автор: Ofer 25.11.2007, 18:40 | ||||
Получается, что ты удаляеш из строки S начиная с позиции n n символов. Если ты хочеш удалить все нечетные цифры, то так:
Если же надо сформировать новую строку из символов, имеющих четные позиции в исходной строке, то может подойти такое:
|
Автор: digitech 25.11.2007, 18:54 | ||
А при вот при строке s:='sdf654df8b6t5yd4h3'; прога работать не будет, так как она не сможет преобразовать латинские буквы в цифры. Ведь в задании написано удалить символы , а не цифры. конечно и я неправильно задание написал. Нужно было: стоящие на нечётных местах. Вот код, который удаляет символы стоящие на нечётных местах. Только я не пойму, почему при inc(n) {n:=n+1} всё выполняется правильно. Хотя при каждом цыкле должна удаляться каждая цифра. По сути дела, должно быть Inc(n,2); {n:=n+2} но при этом почему-то удаляется всё что попало. Почему так происходит?
|
Автор: Ofer 25.11.2007, 19:41 | ||||
Там есть второй код, который делает то что ты хочеш
Потому что ты удалил символ и остальная часть строки сдвинулась. Теперь символы, которые ранее были на четных позициях становеяться на нечетные. Ты увеличиваеш счетчик на единицу и снова удалеяш. Остаток строки снова сдвигается и тебе кажется, что удаление происходит через позицию. Инными словами. Имеем строку 1234567890 и n = 1. ты удалил символ с позицией n, т.е. первый, получил 234567890. Увеличил n, теперь n = 2. Удаляеш символ на второй позиции, а єто уже, как видиш, тройка. В итоге получаеш 24567890. И т.д. аж до конца строки. Теперь пнятно, что когда ты делаеш Inc(n,2) ты начинаеш прыгать через элементы строки? |
Автор: digitech 25.11.2007, 20:51 |
понял. спасибо что объснили |
Автор: volvo877 26.11.2007, 14:17 | ||
Ну, и на кой извращаться? Обязательно вторую строку вводить? Одной уже никак?
|