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

If (hb)then

begin

NumerikArray[j]:=NumerikArray[j]+NumerikArray[l];

NumerikArray[l]:=0;

Go:=true

//mmo2.Lines.Add('***');

end;

end;

end;

end;

end; // 3*5*x-x*3+x*y = +12*x+x*y

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

mmo2.Lines.Add(FloatToStr(NumerikArray[j]));}

Temp:='';

Res:='';

for j:=0 to High(NumerikArray) do

begin

if(NumerikArray[j]<>0) then

begin

//mmo2.Lines.Add('***');

Temp:=FloatToStr(NumerikArray[j]);

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

begin

temp:=temp+'*'+ElementArray[j][l];

end;

if(not isPMUR(Temp[1]))then

Temp:='+'+Temp;

end;

Res:=Temp+Res;

Temp:='';

end;

{else if(isPM(S[i+1]))then

case S[i+1] of

'+': Delete(S,i+1,1);

end; }

//mmo2.Lines.Add('I :'+IntToStr(i));

//mmo2.Lines.Add('Str:'+S);

//mmo2.Lines.Add('Res:'+Res); //4+(3*х-2*х)-12

Insert(Res, S, i);

if Length(s)>1 then

if(isPM(S[i-1]))then

Delete(S,i-1,1);

//mmo2.Lines.Add('S C:'+S); //

end;

end;

if(go)then

Break;

end;

end;

{BackStr:='';

for i:=1 to Length(S) do

begin

if(S[i]<>' ') then

BackStr:=BackStr+S[i];

end; }

Sokr:=S;

//mmo2.Lines.Add(BackStr);

end;

function TForm1.Stepner(S: String): String;

var

i,j,l,k,Step,Error:integer;

BackStr, Block : string;

New:Boolean;

begin

New := True;

while(New) do

begin

New:=false;

for i:=1 to Length(S) do

begin

if(S[i]='^') then

begin

l:=0;

k:=0;

Step:=0;

BackStr:='';

Block:='';

New:=True;

j:=1;

while(true)do

begin

if (i+j+1 > Length(S)) then

Break;

if (isNumber(S[i+j+1])= false) then

Break;

j:=j+1;

end;

//i+1 .... j - степень

l:=j; //сохраним степень

Val(Copy(S, i+1, j),Step, Error);

//mmo2.Lines.Add(IntToStr(Step));

If isSc(s[I-1]) then

begin

k:=0;

for j:=i-1 downto 1 do

begin

if(S[j]=')')then

k:=k+1

else if (S[j]='(')then

k:=k-1;

if (k=0)then

Break;

end;

Block:=Copy(S, j, i-j);

//mmo2.Lines.Add(Block);

end

else

begin

//mmo2.Lines.Add(IntToStr(j));

j:=i-1;

while((isPMUR(S[j]) <> True)and(isSC(S[j])<> True)and(j>=1)) do

begin

{if ((isNumber(S[i-1]))and(not isNumber(S[j])))then

Break

else if((not isNumber(S[i-1]))and(isNumber(S[j]))) then

Break; }

j:=j-1;

end;

j:=j+1;

Block:=Copy(S, j, i-j);

//mmo2.Lines.Add(Block);

end;

Delete(S, j, i-j+l+1);

//mmo2.Lines.Add(IntToStr(j)+ ' '+ IntToStr(i)+ ' '+ IntToStr(l)+ ' '+ IntToStr(i-j+l));

for k:=1 to Step do

begin

BackStr:=BackStr+Block;

if(k<>Step)then

BackStr:=BackStr+'*';

end;

//mmo2.Lines.Add(BackStr);

if (Step <> 1) then

begin

BackStr:='('+BackStr+')';

end;

Insert(BackStr, S, j); //123+(x-14)^3+6

//mmo2.Lines.Add(S);

end;

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