Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PZ_DP_2012_chast_2.docx
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
302.12 Кб
Скачать

If(nextS)then

begin

nextS:=False;HB:=false;

h:=0;l:=0;k:=0;elem:=0;n:=0;m:=0;

Temp:=''; Res:='';

SetLength( BigElenent, 0); SetLength( HeaderPer, 0);

SetLength( NumerikArray, 0);SetLength( ElementArray, 0);SetLength( DataPer, 0);

Preo:='';

//mmo2.Lines.Add(Copy(S,i+1,j-i));

Preo:=Copy(S,i+1,j-i);

Delete(S,i,j-i+2); //4+(3*х-2*х)-12

//mmo2.Lines.Add('D:'+s);

If(not isPm(Preo[1]))then

Preo:='+'+Preo;

l:=Length(Preo);

k:=0;

for j:=Length(Preo) downto 1 do

If isPm(Preo[j]) then

begin

SetLength(BigElenent, k+1);

BigElenent[k]:=Copy(Preo, j, l-j+1);

k:=k+1;

l:=j-1;

end;

{for j:=0 to High(BigElenent) do

mmo2.Lines.Add(BigElenent[j]); }

SetLength(NumerikArray, High(BigElenent)+1);

SetLength(ElementArray, High(BigElenent)+1);

SetLength(HeaderPer, 0);

for j:=0 to High(BigElenent) do

begin

l:=Length(BigElenent[j]);

k:=0;

elem:=0;

if(BigElenent[j][1]='-')then

NumerikArray[j]:=-1

else

NumerikArray[j]:=1;

for h:=Length(BigElenent[j]) downto 1 do

begin

if((h=1)or(BigElenent[j][h]='*')) then

begin

if(isNumber(BigElenent[j][h+1]))then

begin

//mmo2.Lines.Add(Copy(BigElenent[j], h+1, l-h)); // 3*5*x-x*3+x*y = 12*x+x*y

NumerikArray[j]:=NumerikArray[j]*StrToFloat(Copy(BigElenent[j], h+1, l-h));

end

else

begin

SetLength(ElementArray[j], elem+1);

ElementArray[j][elem]:=Copy(BigElenent[j], h+1, l-h);

elem:=elem+1;

end;

//mmo2.Lines.Add(Copy(BigElenent[j], h+1, l-h));

l:=h-1;

end;

If ((not isPmur(BigElenent[j][h])) and (not isNumber(BigElenent[j][h])))then

begin

HB:=True;

//mmo2.Lines.Add(IntToStr(High(HeaderPer)));

//mmo2.Lines.Add(BigElenent[j][h]);

for n:=0 to High(HeaderPer) do

if (HeaderPer[n] = BigElenent[j][h])then

begin

//mmo2.Lines.Add(HeaderPer[n]+' '+BigElenent[j][h]);

HB:=False;

end;

if(HB)then // 3*5*x-y*x*3*5+x*y

begin

//mmo2.Lines.Add(IntToStr(High(HeaderPer)));

if (High(HeaderPer) < 0) then

SetLength(HeaderPer, 1)

else

SetLength(HeaderPer, High(HeaderPer)+2);

//mmo2.Lines.Add(HeaderPer[High(HeaderPer)] );

HeaderPer[High(HeaderPer)]:=BigElenent[j][h];

end;

end;

end;

end;

{for j:=0 to High(HeaderPer) do

mmo2.Lines.Add(HeaderPer[j]);

for j:=0 to High(NumerikArray) do

mmo2.Lines.Add(FloatToStr(NumerikArray[j]));} // (-3.1-4.333+2.2*x+4.25*x)

SetLength(DataPer, High(ElementArray)+1);

for j:=0 to High(DataPer) do

begin

SetLength(DataPer[j], High(HeaderPer)+1);

for l:=0 to High(DataPer[j]) do // 3*5*x-y*x*3*5+x*y

begin

DataPer[j][l]:=0;

end;

end;

for j:=0 to High(ElementArray) do

begin

for l:=0 to High(ElementArray[j]) do

begin

for n:=0 to High(HeaderPer) do

begin

if(HeaderPer[n]=ElementArray[j][l])then

Break;

end;

DataPer[j][n]:=DataPer[j][n]+1;

end;

end;

for j:=0 to High(ElementArray) do // 3*5*x-x*3+x*y { y*(x-1)-1 x^2-y^2-1 }

begin

Temp:=FloatToStr(NumerikArray[j]);

for l:=0 to High(ElementArray[j]) do

Temp:=Temp+' '+ElementArray[j][l]+' ';

for l:=0 to High(DataPer[j]) do

Temp:=Temp+':'+IntToStr(DataPer[j][l]);

//if(

//mmo2.Lines.Add(Temp);

end;

for j:=0 to High(ElementArray)-1 do

begin

if (NumerikArray[j]<>0)then

begin

for l:=j+1 to High(ElementArray) do

begin

if(NumerikArray[l]<>0)then

begin

HB:=True;

for n:=0 to High(DataPer[j]) do

begin

if(DataPer[j][n]<>DataPer[l][n])then

begin

HB:=False;

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]