Помогите пожалуйста решыть. Программа. Вo входном файле задан текст, за которым следует точка. Проверить, удовлетворяет ли его структура следующему определению: <текст>::=<элемент> │ <элемент> <текст> <элемент>::—а | b | (<текст> )| [<текст>] | {<текст>}
Зарание спасибо)))
Lapp
21.11.2008 8:51
Собственно, нужно только, грубо говоря, перевести определение на Паскаль. Никаких других умственных затрат, почти слово в слово. Хотя нет, вру.. Пришлось добавить к определению, что пустая строка - это тоже текст. Думаю, без этого не обойтись.
const Letters: set of char= ['a','b'];
function IsText(s:string):boolean; forward;
function IsElement(s:string):boolean; begin IsElement:= (Length(s)=1) and (s[1] in Letters) or ( (s[1]='(') and (s[Length(s)]=')') or (s[1]='[') and (s[Length(s)]=']') or (s[1]='{') and (s[Length(s)]='}') ) and IsText(Copy(s,2,Length(s)-2)) end;
function IsText(s:string):boolean; var i:integer; begin i:= 0; repeat Inc(i) until (i>Length(s)) or IsElement(Copy(s,1,i)) and IsText(Copy(s,i+1,Length(s))); IsText:= (s='') or (i<=Length(s)) end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.