Задача 3 Урок 19

Задача 3 Урок 19

Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.

type
  strArr = array[1..30] of string;

var
  f1: text;
  filename, s: string;
  i, max : integer;
  str_arr: strArr;

procedure get_max_str(str: string; var max: integer); //находим максимальное из строки
var
  i, num, code: integer;
  num_str: string;
begin
  i := 1;
  while(i <= length(str)) do
  begin
    if((str[i] >= '0') AND (str[i] <= '9')) then
    begin
      num_str := '';

      while((str[i] >= '0') AND (str[i] <= '9') AND (i <= length(str))) do
      begin
        num_str += str[i];
        i += 1;
      end;

      val(num_str, num, code);

      if(code = 0) then
        if(num > max) then
          max := num;
    end
    else
      i += 1;
  end;
end;

procedure col_to_arr(str: string; var arr: strArr); //сохраняем столбцы, как элементы массива строк
var
  i: integer;
begin
  for i := 1 to length(str) do
    arr[i] += str[i];
end;

begin

  str_arr[1] := '';
  max := 0;

  filename := 'D:\User\Pascal\lesson18\task_3\input.txt';
  assign(f1, filename);
  reset(f1);

  while(NOT eof(f1)) do
  begin
    readln(f1, s);
    get_max_str(s, max);
    col_to_arr(s, str_arr);
    writeln(s);
  end;

  for i := low(str_arr) to high(str_arr) do
  begin
    if(str_arr[i] = '') then
      break;
    get_max_str(str_arr[i], max);
  end;

  writeln();
  writeln('Maximalnoe: ', max);

  readln();

end.