![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
XimeR |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Собственно задача :
Дана последовательность круглых фигурных и квадратных скобок. Определить, нет ли "пересечения" скобок. Например, последовательность (([)])() НЕправильна, а последовательность (([()])()) - правильна. Нашел исходник: Код var s:string; c:byte; b:boolean; begin readln(s); b:=true; while b do begin b:=false; c:=pos('[]',s); if c>0 then begin delete(s,c,2); b:=true; end; c:=pos('()',s); if c>0 then begin delete(s,c,2); b:=true; end; c:=pos('{}',s); if c>0 then begin delete(s,c,2); b:=true; end; end; if length(s)>0 then writeln('No') else writeln('Yes'); end. Возникла еще одна сложность. Если есть "пересечение", то при выводе строки на экран надо выделить цветом те скобки, из-за которых произошло "пересечение". Как реализовать?(с моими небольшими знаниями...) Или тут придется по-другому писать? Может исходник со стеком видел кто... |
![]() ![]() |
Гость |
![]()
Сообщение
#2
|
Гость ![]() |
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
А также вот в этом:
( ( ( ( ( ( ( И вот в этом: ) ) ) ( ( ( |
amega |
![]()
Сообщение
#4
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
вся задача со скобками сводится к стеку.. написать поцедуру пуш и поп и потом прото проверять последний елемент.
|
XimeR |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
вся задача со скобками сводится к стеку.. написать поцедуру пуш и поп и потом прото проверять последний елемент. Видел такие советы в инете, но блин в стеках и прочем я не силен, т.к. еще это не изучил...=( А исходник только один нашел, который выложил... А в этом коде не корректные скобки никак не подстветить при выводе? |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата но блин в стеках и прочем я не силен, т.к. еще это не изучил...=( В таком случае уточни, что ты уже изучил. Это первое.А второе - тебе задали вопрос, что выделять в трех приведенных случаях. Ты его оставил без ответа. Почему? |
XimeR |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
В таком случае уточни, что ты уже изучил. Это первое. А второе - тебе задали вопрос, что выделять в трех приведенных случаях. Ты его оставил без ответа. Почему? Изучил мало...Вообще ничего....Все только ур-нь школы - массивы, процедуры и ф-ии... Цитата А второе - тебе задали вопрос, что выделять в трех приведенных случаях. Ты его оставил без ответа. Почему? Ну я вообще-то не понял, к чему эти скобки...У меня ведь в примере ищет и удаляет пару скобок, которая содержит и открытую, и закрытую...Находит - удаляет....Если в строке ничего, то правильно, если осталось что-то, то то и выделить нужно... |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата У меня ведь в примере ищет и удаляет пару скобок, которая содержит и открытую, и закрытую...Находит - удаляет... Это проблемы твоей реализации... По заданию ты ничего не должен удалять, там сказано: Цитата Определить, нет ли "пересечения" скобок. , и все, ни о каких удалениях речь не идет... |
XimeR |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Тогда как решать задачу? Очень просто - нажимай на клавиши в нужной последовательности ![]() Если в строке ничего, то правильно, если осталось что-то, то то и выделить нужно... Вот и выдели, в тех примерах, которые я привел (гостем). В форме ответа есть кнопочка для цвета текста, воспользуйся ей, пожалуйста.Если условие неясно - как решать задачу? ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
XimeR |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот и выдели, в тех примерах, которые я привел (гостем). В форме ответа есть кнопочка для цвета текста, воспользуйся ей, пожалуйста. ![]() И ( ( ( ( ( ( ( И ) ) ) ( ( (.... ( неправильные последовательности) А выходит я не прав? ![]() Сообщение отредактировано: XimeR - 8.06.2009 16:25 |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
А выходит я не прав? Откуда нам знать, прав ли ты. Из тебя не так просто вытягивать информацию. Ты никак не хочешь понять, что задача не до конца поставлена. И кто будет тогда ее решать?Если стену надо покрасить в красный - нет проблем. Если в полосочку с цветочками - тоже. А если говорят: "покрась, неизвестно как, но не ошибись!" - то извини.. Вот этот пример мне так и неясен: ( [ ) ] Кто кому мешает? Если отбрезать: ( [ ) - то вроде ясно, что [ лишняя, ее надо выделять. Так? Но тогда совсем неявсно, что выделять в первом примере. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
XimeR |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот этот пример мне так и неясен: ( [ ) ] Кто кому мешает? Если отбрезать: ( [ ) - то вроде ясно, что [ лишняя, ее надо выделять. Так? Но тогда совсем неявсно, что выделять в первом примере. Тогда я сам в тупике...Я думал, что надо выделить скобки, в которых "произошло пересечение"... Пример неправильной последовательности : (([)])() ===> (([)]) Или 2 пары скобок (([)]) Что правильней сам не пойму ![]() ___________________________________________ Вот еще наработка...Но в коде я не разбирался и врядли разберусь быстро. Код type s=str[80]; yk=^el; el=record inf:byte; adr:yk; end; var str:s; p:integer; na:yk; const otkr:s=['(','[','{']; zakr:s=[')',']','}']; function poisk(str[k]:char):integer; procedure vkl(nom:byte); ... begin writeln('vvedite stroku'); readln(str); k:=1; while k<=streln(str) do begin p:=poisk(str[k]); if p<>0 then if p>0 then vkl(p) else begin os=izwl; if os=o then writeln (...); if os<>-p then writeln ('ne ta otkr.skobka'); end; inc(k); end; if izwl <>0 then writeln ('lishnie skobki'); end. Может кто-нибудь помочь дописать\исправить, а то я еще не разобрался, а надо, чтобы работала... Сообщение отредактировано: XimeR - 9.06.2009 20:25 |
Archon |
![]()
Сообщение
#14
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если смотреть по логике работы стека, то выделять надо так:
( [ ( ] ) ( [ ) ] ( ( ( ( ( ( ( ) ) ) ( ( ( То есть если скобка не подходит, то выделяем ее цветом и пропускаем. Примерно так:
XimeR, попробуй привести задание дословно. Может и поймем что-то. Сообщение отредактировано: Archon - 10.06.2009 10:13 -------------------- Close the World...txeN eht nepO
|
XimeR |
![]()
Сообщение
#15
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата XimeR, попробуй привести задание дословно. Может и поймем что-то. Задание дословно в 1ом посту...Но когда я показывал исходник преподу, она и сказала: "Выдели, где пересечение" ![]() Archon твой код под мой исходник?! ![]() ![]() |
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Archon твой код под мой исходник?! Господа офицеры, прошу молчать! (С) ![]() ![]() Его не надо никуда вставлять, он сам по себе. Но для него нужны процедуры, которые реализуют стэк. Посмотри на эту тему в FAQе. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 21:22 |