Строки, Удаление |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строки, Удаление |
Real |
19.05.2006 17:33
Сообщение
#1
|
Гость |
Составьте программу удаления символов «А» стоящих на четных местах в полученной от пользователя строке.
|
Bokul |
19.05.2006 19:33
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
А какие могут быть проблемы?
Код var s : строка; i: byte; Begin Берем строку(s); от i:=1 до длина(s) делаем если (i = четное) и (s[i] = 'А') то удаляем(со строки s, в позиции i, 1 элемент); выводим результат; конец. Что не можешь сделать сам? Сообщение отредактировано: Bokul - 19.05.2006 19:39 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
19.05.2006 19:50
Сообщение
#3
|
Гость |
Цитата(Bokul @ 19.05.2006 19:33) А какие могут быть проблемы? А очень простые Вот тебе пример: S := 'fAfAfA'; По строке надо от конца в начало проходить, иначе твой алгоритм идет лесом - при удалении символа в позиции №2 все остальные символы сдвинутся на 1 вправо, и обе оставшиеся буквы 'A' не будут удалены, хотя изначально находились именно на четных позициях... Кстати, ты можешь в своем алгоритме получить еще одну проблему - длина строки при использовании цикла For вычислится перед началом цикла, и то, что ты будешь изменять длину строки при удалении элементов никак не будет замечено. Результат - возможен выход за пределы строки. |
Bokul |
19.05.2006 19:56
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Спасибо Volvo
Коректируем Код var s : строка; i,len: byte; Begin Берем строку(s); len:=длина(s); от i:=len до 1 делаем {роль "до" - downto} если (i = четное) и (s[i] = 'А') то удаляем(со строки s, в позиции i, 1 элемент); выводим результат; конец. Сообщение отредактировано: Bokul - 19.05.2006 20:00 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
klem4 |
20.05.2006 18:47
Сообщение
#5
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
И что ты изменил ? помоему ничего ... кроме направления просмотра строки.
Сообщение отредактировано: klem4 - 20.05.2006 18:47 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Bokul |
20.05.2006 19:16
Сообщение
#6
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата И что ты изменил ? помоему ничего ... кроме направления просмотра строки. Не только, во-первых, тепер длина строки вычисляется не в цикле. А во-вторых, больше ничего не надо изменять, все и так работает Вот код этого алгоритма: Код var s:string; i,len:byte; begin writeln('Enter string'); readln(s); len:=length(s); for i:=len downto 1 do if ((i mod 2)=0) and (s[i]='A') then delete(s,i,1); writeln('Result :',s); readln; end. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Malice |
20.05.2006 19:19
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
И что ты изменил ? помоему ничего ... кроме направления просмотра строки. Точно подмечено Этого недостаточно ? 2Bokul: Length теперь и в for можно ставить - следуя в обратном направлении за пределы строки не вылетишь. Сообщение отредактировано: Malice - 20.05.2006 19:21 |
klem4 |
20.05.2006 19:55
Сообщение
#8
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Да я погорячился по ходу, извиняюсь.
Я бы решал так i := 2; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 28.04.2024 23:11 |