Показать сообщение отдельно
  #1  
Старый 26.05.2014, 00:00
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Сижу не могу сообразить как реализовать.
Есть допустим многочлен
-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;      
Изображения
Тип файла: jpg 2014-05-26_19-27-21.jpg (23.8 Кбайт, 3 просмотров)
Ответить с цитированием