Показать сообщение отдельно
  #3  
Старый 27.05.2014, 08:39
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 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;
Ответить с цитированием