![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Baturaanna |
![]()
Сообщение
#1
|
Гость ![]() |
Составить процедуру, позволяющую определить позицию самого правого вхождения заданного символа в исходную строку. Если строка не содержит символа, то результатом работы будет -1.
Помогите кто может. Заранее благодарна.Я вообще в этом Паскале слабо соображаю. |
compiler |
![]()
Сообщение
#2
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Составить процедуру, позволяющую определить позицию самого правого вхождения заданного символа в исходную строку. Если строка не содержит символа, то результатом работы будет -1. проходишь в цикле от последнего элемента до первого и ищешь, если находишь то прирываеш цикл...-------------------- Спасибо!
Удачи! |
Baturaanna |
![]()
Сообщение
#3
|
Гость ![]() |
А если тебе не трудно напиши текст программы. Я вообще не представляю что такое процедура, как её описать и вообще зачем она нужна.
|
compiler |
![]()
Сообщение
#4
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
А если тебе не трудно напиши текст программы. Я вообще не представляю что такое процедура, как её описать и вообще зачем она нужна. зачем нужна? имхо, прийдет со временем когда будеш переходить на ООП, как на зло начнешь мыслить процедурами и функциями ![]() ![]() сейчас постараюсь написать... а еще тебе нужна именно процедура или можна функцией? Сообщение отредактировано: compiler - 29.06.2007 16:39 -------------------- Спасибо!
Удачи! |
Baturaanna |
![]()
Сообщение
#5
|
Гость ![]() |
именно процедура.
Добавлено через 5 мин. У меня ещё трудности есть с задачей одной. Ты не знаешь как проверить в стречается ли в данном тексте определённая последовательность букв. Например: дан текст: лдвифдиди=-042349348аа84ьтп, проверить есть ли в нём последовательность 'абв', к примеру. Ну это так, если есть мысли напиши. И так уже припахала. |
compiler |
![]()
Сообщение
#6
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
именно процедура. держи
procedure GetPosition(const str:string; ch:char; var int:integer); У меня ещё трудности есть с задачей одной. Ты не знаешь как проверить в стречается ли в данном тексте определённая последовательность букв. Например: дан текст: лдвифдиди=-042349348аа84ьтп, проверить есть ли в нём последовательность 'абв', к примеру. Ну это так, если есть мысли напиши. И так уже припахала. для этого есть posfunction IfInStr (const str1,str2:string):boolean; Сообщение отредактировано: compiler - 29.06.2007 17:37 -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
compiler, чего тебя так тянет лишние условия в программе ставить? На то и придумали Boolean-тип, чтобы сразу можно было присвоить ему или True или False...
function IfInStr (const str,str2:string):boolean; |
Baturaanna |
![]()
Сообщение
#8
|
Гость ![]() |
Спасибо большое, сейчас попробую. Очень благодарна.
|
compiler |
![]()
Сообщение
#9
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
compiler, чего тебя так тянет лишние условия в программе ставить? На то и придумали Boolean-тип, чтобы сразу можно было присвоить ему или True или False... черт ![]() ![]() сообщение отредактировано. Сообщение отредактировано: compiler - 29.06.2007 17:36 -------------------- Спасибо!
Удачи! |
Neznaika |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
[quote name='compiler' date='29.06.2007 18:21' post='107326']
держи procedure GetPosition(const str:string; ch:char; var int:integer); Хммм, ошибочка в компиляторе! [quote]Составить процедуру, позволяющую определить позицию самого правого вхождения заданного символа в исходную строку. Если строка не содержит символа, то результатом работы будет -1.[/quote] Правильное решение:
По моему так. P.S. Нехорошо обманывать девушек ![]() |
compiler |
![]()
Сообщение
#11
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Цитата Хммм, ошибочка в компиляторе! Ты о чем? Ошибочка компилятора? Ошибочка в выборе компилятора? ( ![]() о комментариях... -----ну замени выделение комментариев, или допиши макросы... об алгоритме -----ну, использовал другой, без прирываний.. о const -----все зависит от компилятора(специально установил TP, в последних версиях(тестировал7.0)работает, в 6.0--нет) Цитата Нехорошо обманывать девушек так ты о чем?![]() Сообщение отредактировано: compiler - 13.07.2007 13:55 -------------------- Спасибо!
Удачи! |
Neznaika |
![]()
Сообщение
#12
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ты о чем? Ошибочка компилятора? Ошибочка в выборе компилятора? ( ![]() о комментариях... -----ну замени выделение комментариев, или допиши макросы... об алгоритме -----ну, использовал другой, без прирываний.. о const -----все зависит от компилятора(специально установил TP, в последних версиях(тестировал7.0)работает, в 6.0--нет)так ты о чем? compiler, извиняюсь. Просто мне показалось странным, что Вы предлагаете перебирать все символы строки. Зачем? Может быть нужный символ - последний в строке. Всего одна проверка и потребовалась бы, если сканировать строку справа. ![]() |
klem4 |
![]()
Сообщение
#13
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата(Neznaika) Правильное решение: крайне спорное утверждение ... Цитата(Neznaika) Просто мне показалось странным, что Вы предлагаете перебирать все символы строки. Зачем? А ты разьве не тоже самое сделала в своем решении ?!?! ![]() ![]() Цитата(Neznaika) for I := Length(S) downto 1 do -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Neznaika |
![]()
Сообщение
#14
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
Чёрт, вообщето я - он(то есть М, а не Ж).
Нехорошо обманывать девушек - НАПИСАЛ СГОРЯЧА(если в задании написано справа, попробуйте девушке объяснить, почему ваш алгоритм сканирует строку слева). |
klem4 |
![]()
Сообщение
#15
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
по поводу м/ж извиняюсь, по поводу решения, да окей, exit я не приметил ... и все-же, а чем pos то не подходит ? Какраз первое вхождение находит ... Ну а если бес pos то можно покороче, вот так:
function first_pos(const s: string; const ch: char): Integer; Добавлено через 14 мин. или вот еще вариант function first_pos(s: string; ch: char; i: Byte): Integer; Сообщение отредактировано: klem4 - 13.07.2007 19:45 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Neznaika |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
Кажется нужно было просто
Цитата определить позицию самого правого вхождения заданного символа в исходную строку в моём варианте строка и сканируется справа. Просто это у меня от ассемблера: выбирается самый "оптимальный" вариант(если конечно считать, что нужные символы сгруппированы в конце строки, а не в её начале). В любом случае проверять все символы строки, по-моему, это ненормально. Например строка 100 символов. Нужный символ входит в строку 3 раза и находится на 1, 2 и 3-м местах. Ну проверили эти три символа, сохранили позицию последнего вхождения (итого 3 сравнений и 3 присваивания), но всё равно нужно проверить остальные 97 символов (соответственно ещё 97 сравнений). Но зачем? В этом случае было бы достаточно 97 сравненний и 1 присваивания. По-моему так. Сообщение отредактировано: Neznaika - 13.07.2007 20:39 |
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Цитата В любом случае проверять все символы строки, по-моему, это ненормально. Давай, ты не будешь решать, что ДА нормально, а что - НЕТ. Если строка содержит искомый символ первым, то твоя программа будет также проходить по всей строке. Сам себе противоречишь... |
Neznaika |
![]()
Сообщение
#18
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
Давай, ты не будешь решать, что ДА нормально, а что - НЕТ. Если строка содержит искомый символ первым, то твоя программа будет также проходить по всей строке. Сам себе противоречишь... Если этот символ единственный в строке, то направление сканирования строки не имеет значения. Нужный символ в начале строки и он входит в строку единожды - это крайний случай. |
Lapp |
![]()
Сообщение
#19
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Я согласен с Neznaika'ой. При случайной расстановке символов в строке сканирование с конца будет более эффективно, безусловно.
И почему бы ему не высказать свое мнение относительно нормальности или ненормальности? Фраза "по-моему, это ненормально" совсем не выглядит решением.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
klem4 |
![]()
Сообщение
#20
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Lapp, безусловно, опять моя невнимательность и чтение "через строчку". Фразу "самого правого" мой мозг интерпритировал как "самого первого" то есть "самого левого"
![]() В таком случае рекурсивный вариант будет таким: function first_pos(s: string; ch: char; i: Byte): Integer; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:34 |