27.05.2014, 08:39
|
Новичок
|
|
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
|
|
Сам все же разобрался =) Может надо кому будет
Код:
procedure inputPoly(line: integer; str:string);
var
i,x,k: integer;
s:string;
begin
//обнуляем массив перед записью
for i:=0 to maxpower do
koeff[i, line] := 0;
// обнуляем на всякий случай
k:=0;
x:=0;
s:='';
//от 1 до длины строки
for i := 1 to Length(str) do
//если символ в строке
case str[i] of
'0'..'9':
begin
//если еще не было Х записываем число в строку
if x=0
then s:=s+Str[i];
// Если был x и ^ тогда
if (x=1) and (k=1) then
begin
//Записываем в массив S в строку номером = степени
koeff[strtoint(str[i]), line]:= strtoint(s);
s:='';
x:=0;
k:=0;
end;
// Если конец строки записываем число
if (i=Length(str))
then koeff[0, line]:= strtoint(s);
end;
'x','X':
begin
//встретили x
x:=1;
// если просто x или -x добавляем 1
if (s='') or (s='-')
then s:=s+'1';
// Если x последний в строке
if i=Length(str)
then
begin
koeff[1, line]:= strtoint(s);
s:='';
x:=0;
k:=0;
end;
end;
'^':
begin
//Встретили ^
k:=1;
end;
'+','-':
begin
// Если был x но небыло ^
if (x=1) and (k=0)
then
begin
koeff[1, line]:= strtoint(s);
s:='';
x:=0;
k:=0;
end;
// Если минус записываем в строку
if (str[i]='-')
then s:=s+Str[i];
end;
end;
end;
|