if (s[3]=form1.Memo1.Lines[i][3]) and (s[4]=form1.Memo1.Lines[i][4]) then
begin
form1.Memo1.Lines[i]:=s;
be:=true;
end;
if (form1.Memo1.Lines.count=cou) and (not(be)) then
form1.Memo1.Lines.add(s);
end;
Procedure CreateSSO;
var //формирование ССО
i,j:integer;
s,s2:string;
Begin
for i:=0 to form1.Memo1.Lines.Count do
begin
s:=form1.Memo1.Lines[i];
s2:=copy(s,3,6);
delete(s,1,10);
form1.Memo2.Lines.Add(s2);
if s2<>'' then
for j:=1 to e-1 do
if (exceptions[j][1]=s2[5]) and (exceptions[j][2]=s2[6]) then
form1.Memo2.Lines.Add(exceptions[j])
else
if length(s2)=2 then
if (exceptions[j][1]=s2[1]) and (exceptions[j][2]=s2[2]) then
form1.Memo2.Lines[form1.Memo2.Lines.Count-1]:=form1.Memo2.Lines[form1.Memo2.Lines.Count-1]+'->'+exceptions[j][5]+exceptions[j][6];
while length(s)>0 do
begin
s2[1]:=s2[5];
s2[2]:=s2[6];
s2[5]:=s[1];
s2[6]:=s[2];
delete(s,1,4);
form1.Memo2.Lines.Add(s2);
if e<>1 then
for j:=1 to e-1 do
if (exceptions[j][1]=s2[5]) and (exceptions[j][2]=s2[6]) then
form1.Memo2.Lines.Add(exceptions[j]);
end;
end;
end;
Procedure CreateTable(p:Ppiece; var TurnNumber:integer);
var //Процедура отображения текущего шага в таблице
q,start,c,v:Ppiece;
Begin
start:=p;
While p<>nil do
if p^.next<>nil then
if p^.next^.next<>nil then
Begin
If (p^.next^.next^.s='*') or (p^.next^.next^.s='/') or (p^.next^.next^.s='+') or (p^.next^.next^.s='-') then
If (not((p^.next^.s='*') or (p^.next^.s='/') or (p^.next^.s='+') or (p^.next^.s='-'))) and (not((p^.s='*') or (p^.s='/') or (p^.s='+') or (p^.s='-'))) then
Begin
if p^.next^.next^.s='*' then //добавление строки в таблицу МАП умножения
Begin
If p^.next^.TurnNumber=TurnNumber then
begin
Form1.StringGrid1.Cells[1,form1.StringGrid1.RowCount-1]:='У'+inttostr(p^.next^.next^.number);
Form1.StringGrid1.Cells[2,form1.StringGrid1.RowCount-1]:=p^.next^.s;
inc(p^.next^.TurnNumber);
form1.StringGrid1.RowCount:=form1.StringGrid1.RowCount+1;
end;
If p^.TurnNumber=TurnNumber then
Begin
Form1.StringGrid1.Cells[1,form1.StringGrid1.RowCount-1]:='У'+inttostr(p^.next^.next^.number);
Form1.StringGrid1.Cells[2,form1.StringGrid1.RowCount-1]:=p^.s;
inc(p^.TurnNumber);
form1.StringGrid1.RowCount:=form1.StringGrid1.RowCount+1;
end;
end;
if p^.next^.next^.s='/' then //добавление строки в таблицу МАП деления
Begin
If p^.next^.TurnNumber=TurnNumber then
begin
Form1.StringGrid2.Cells[1,form1.StringGrid2.RowCount-1]:='Д'+inttostr(p^.next^.next^.number);
Form1.StringGrid2.Cells[2,form1.StringGrid2.RowCount-1]:=p^.next^.s;
inc(p^.next^.TurnNumber);
form1.StringGrid2.RowCount:=form1.StringGrid2.RowCount+1;
end;
If p^.TurnNumber=TurnNumber then
Begin
Form1.StringGrid2.Cells[1,form1.StringGrid2.RowCount-1]:='Д'+inttostr(p^.next^.next^.number);
Form1.StringGrid2.Cells[2,form1.StringGrid2.RowCount-1]:=p^.s;
inc(p^.TurnNumber);
form1.StringGrid2.RowCount:=form1.StringGrid2.RowCount+1;
end;
end;
if p^.next^.next^.s='+' then //добавление строки в таблицу МАП сложения
Begin
If p^.next^.TurnNumber=TurnNumber then
begin
Form1.StringGrid3.Cells[1,form1.StringGrid3.RowCount-1]:='C'+inttostr(p^.next^.next^.number);
Form1.StringGrid3.Cells[2,form1.StringGrid3.RowCount-1]:=p^.next^.s;
inc(p^.next^.TurnNumber);
form1.StringGrid3.RowCount:=form1.StringGrid3.RowCount+1;
end;
If p^.TurnNumber=TurnNumber then
Begin
Form1.StringGrid3.Cells[1,form1.StringGrid3.RowCount-1]:='C'+inttostr(p^.next^.next^.number);
Form1.StringGrid3.Cells[2,form1.StringGrid3.RowCount-1]:=p^.s;
inc(p^.TurnNumber);
form1.StringGrid3.RowCount:=form1.StringGrid3.RowCount+1;
end;
end;
if p^.next^.next^.s='-' then //добавление строки в таблицу МАП вычитания
Begin
If p^.next^.TurnNumber=TurnNumber then
begin
Form1.StringGrid4.Cells[1,form1.StringGrid4.RowCount-1]:='В'+inttostr(p^.next^.next^.number);
Form1.StringGrid4.Cells[2,form1.StringGrid4.RowCount-1]:=p^.next^.s;
inc(p^.next^.TurnNumber);
form1.StringGrid4.RowCount:=form1.StringGrid4.RowCount+1;
end;
If p^.TurnNumber=TurnNumber then
Begin
Form1.StringGrid4.Cells[1,form1.StringGrid4.RowCount-1]:='В'+inttostr(p^.next^.next^.number);
Form1.StringGrid4.Cells[2,form1.StringGrid4.RowCount-1]:=p^.s;
inc(p^.TurnNumber);
form1.StringGrid4.RowCount:=form1.StringGrid4.RowCount+1;
end;
end;
q:=p^.next^.next;
c:=p^.next;
if ((p^.mem='') and (c^.mem='')) or ((p^.mem<>'') and (c^.mem='')) then
p^.mem:=p^.mem+'->'+q^.mem //запоминаем прошлые операторы первого звена
else
if (p^.mem='') and (c^.mem<>'') then
p^.mem:=c^.mem+'->'+q^.mem //запоминаем прошлые операторы второго звена
else
begin
exceptions[e]:=p^.mem[length(p^.mem)-1]+p^.mem[length(p^.mem)]+'->'+q^.mem;
inc(e); //добавляем исключительную цепь
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.