Сижу не могу сообразить как реализовать.
Есть допустим многочлен
-7x^4-8x^2-1x-9
Его необходимо запихнуть в массив в виде
-9
-1
-8
0
-7
Вот мое кривое, не рабочее творение:d
Код:
procedure input(line: integer; str:string);
var
i,n,k: integer;
s:string;
begin
//обнуляем массив
for i:=0 to maxpower do
koeff[i, line] := 0;
//узнаем длину строки
n:=Length(str);
k:=0;
s:='';
for i := 1 to n do
begin
if (str[i]<>'X') and (str[i]<>'+') and (str[i]<>'^')
then
if k=0 then s:=s+str[i];
else
begin
if str[i]='^' then k:=1;
if (k=1) and (str[i]<>'^')
begin
koeff[str[i]+1, line] := StrToInt(s);
k:=0;
s:='';
end;
if (k=0) and (s<>'') then
begin
koeff[str[1], line] := StrToInt(s);
s:='';
if (str[i]='-')
then s:=s+str[i];
end;
end;
end;
end;
Здесь все должно быть просто. Возьмем тот же пример -7x^4-8x^2-1x-9
x^4 по сути является указателем на место в массиве. А как разбить строку не соображу.
Никто не поможет? Вот нарисовал, и все равно не получается=(
В чем ошибка? Почему в строка при записи пустая?
Код:
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;
//от 1 до длины строки
for i := 1 to Length(str) do
//если символ в строке
case str[i] of
'0'..'9':
begin
//если еще не было Х записываем число
if x=0
then s:=s+Str[i]
else
// if s<>'' then
begin
//Записываем в массив S в строку номером = степени
koeff[strtoint(str[i]), line]:= strtoint(s);
s:='';
x:=0;
end;
end;
'x','X':
begin
x:=1;
end;
'^':
begin
end;
'+','=':
begin
// Если минус записываем в строку второе условие для множетеля с x^1
if (str[i]='-') and (x<>1)
then s:=s+Str[i]
else
// if s<>'' then
begin
//запись для множетеля с x^1
koeff[1, line]:= strtoint(s);
s:='';
x:=0;
// s:=s+Str[i];
end;
end;
end;
end;