Здравствуйте!Я сделал прогу,которая выводит комментарий Конечного Автомата,но она выводит только 1 комментарий,а если вводить 2 и более - нет.Как это реализовать?И автомат может двигаться только вперед,а назад возвращаться не может...
procedure TForm1.Button1Click(Sender: TObject);
type Qka=(H,K,C,D,S,E); {Cостояния КА} var qa : Qka; Sa,Sc: string; i: byte; begin edit2.Text:=''; Sc:=''; Sa:=edit1.Text; qa:=H; i:=1; repeat case qa of H : begin case Sa[i] of '{' : qa:=K; '(' : qa:=D; end; i:=i+1; end; K : begin case Sa[i] of '}' : qa:=S else begin qa:=K;Sc:=Sc+Sa[i]; end; end; i:=i+1; end; D : begin case Sa[i] of '*' : qa:=C else begin qa:=H; Sc:=''; end; end; i:=i+1; end; C : begin case Sa[i] of '*' : qa:=E else begin qa:=C; Sc:=Sc+Sa[i]; end; end; i:=i+1; end; E : begin case Sa[i] of '*' : begin qa:=E; Sc:=Sc+Sa[i]; end; ')' : qa:=S; else begin qa:=C; Sc:=Sc+Sa[i]; end; end; i:=i+1; end; end; until (i>length(Sa)) or (qa=S); if qa<>S then edit2.Text:='Без комментариев' else edit2.Text:=Sc; end;
спасибо,что исправили не столь грамотного...=) Вот рисунок алгоритма. __.rar ( 6.55 килобайт )
Кол-во скачиваний: 511
H – начальное состояние конечного автомата, S – конечное… И комментариями могут быть фразы, заключенные в { } или (* *). Алгоритм на рисунке соответствует нахождению одного комментария. А надо сделать для нескольких…пробовал – не получается, причем автомат может двигаться только вперед, назад – нет.