Рассмотрение понятия регулярных выражений и множеств; их сокращенное обозначение. Представление алгоритма программы, предназначенной для решения системы линейных уравнений методом исключения Гаусса. Ознакомление с содержимым файлов input.txt и output.txt.
Аннотация к работе
Во входном файле (с именем INPUT.TXT) задается размерность системы регулярных уравнений n (1 ? n ? 8) а затем - ее коэффициенты: ?10 ?11 ?12 … ?1n ?20 ?21 ?22 … ?2nРегулярные выражения в алфавите ? и регулярные множества, которые они обозначают, определяются рекурсивно следующим образом: 1) ? - регулярное выражение, обозначающее регулярное множество ?; 2) e - регулярное выражение, обозначающее регулярное множество {e}; 3) если AI?, то a - регулярное выражение, обозначающее регулярное множество {a}; 4) если p и q - регулярные выражения, обозначающие регулярные множества P и Q, то а) (p q) - регулярное выражение, обозначающее PEQ; Таким образом, для каждого регулярного множества можно найти регулярное выражение, его обозначающее, и наоборот.В данной работе создана программа для решения системы регулярных уравнений.begin if (kind in [MQ, CQ]) and ((lf = nil) or (rg = nil)) then begin kind:= kind; end else if Length(Expr) = 2 then begin if Expr[2] = "*" then result_:= ICREATE (RQ, #0, SCREATE (Expr[1]), nil) else result_:= ICREATE (MQ, #0, SCREATE (Expr[1]), SCREATE (Expr[2])); end else if Length(Expr) = 3 then begin if Expr[2] = " " then result_:= ICREATE (CQ, #0, SCREATE (Expr[1]), SCREATE (Expr[3])) else if Expr[2] = "*" then result_:= ICREATE (MQ, #0, ICREATE (RQ, #0, SCREATE (Expr[1]), nil), SCREATE (Expr[3])) else if Expr[3] = "*" then result_:= ICREATE (MQ, #0, SCREATE (Expr[1]), ICREATE (RQ, #0, SCREATE (Expr[2]), nil)) else if (Expr[1] = "(") and (Expr[3] = ")") then result_:= SCREATE (Expr[2]) else result_:= ICREATE (MQ, #0, ICREATE (MQ, #0, SCREATE (Expr[1]), SCREATE (Expr[2])), SCREATE (Expr[3])); MQ: begin if Assigned (SOBJ^.Lf) and (SOBJ^.Lf^.kind = CQ) then {(a )} result_:= "(" SFORMAT (SOBJ^.Lf) ")" SFORMAT (SOBJ^.Rg) else if Assigned (SOBJ^.Rg) and (SOBJ^.Rg^.kind = CQ) then result_:= SFORMAT (SOBJ^.Lf) "(" SFORMAT (SOBJ^.Rg) ")" else result_:= SFORMAT (SOBJ^.Lf) SFORMAT (SOBJ^.Rg); begin if (IV1 = nil) and (IV2 = nil) then result_:= True else if Assigned(IV1) and Assigned(IV2) then result_:= (IV1^.kind = IV2^.kind) and (IV1^.sim = IV2^.sim) and ISSAME (IV1^.Lf, IV2^.Lf) and ISSAME (IV1^.Rg, IV2^.