Так и не отписался=) Теперь работает=)
» Спойлер (нажмите, чтобы прочесть) «
Код
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;
'a'..'z','A'..'Z':
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
//он есть, но мы его не учитываем
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;
Может предложения будут по улучшению, так ради интереса=)
Сообщение отредактировал MotoArhangel - 27.5.2014, 17:41