Задача 3 урок 18

Задача 3 урок 18

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

Примеры:

fsd334rgd
rfg46gdfg
ter5tge56
123gergf

Ответ: 345

type arrSTR = array[1..10] of string;
Var f1:text; filename, str: string;
  i, maxS: integer;
  a: arrSTR;
  // process1 ищет максимальное число по строкам (maxS)
procedure process1(str: string; var maxS: integer);
var i, T, Code: integer; m: string;
begin
  for i:=1 to length(str) do
    begin
      if (str[i]>='0')and(str[i]<='9') then
        begin
        m:=m+str[i];
        if NOT((str[i+1]>='0')and(str[i+1]<='9')) OR (i=length(str)) then
          begin
            Val(m, T, Code);
            if maxS<T then
              maxS:=T;
            m:='';
          end;
        end;
    end;
end;
procedure process2 (str: string; var a: arrSTR);
var i: integer;
begin
  for i:=1 to length(str) do
    a[i]:=a[i]+str[i];
end;

begin
  filename := 'C:\Users\boris\Documents\HTML\tablica.txt';
  assign(f1, filename);
  reset(f1);
  maxS:=0;
  while not eof(f1) do // пока не достигнут конец файла
    begin
      readln(f1, str);  // читаем из него очередную строку
      process1(str,maxS);//поиск большего по строкам
      process2(str,a); //формерование строк по вертикалям
    end;
  for i:=1 to high(a) do
    begin
      process1(a[i],maxS);//"вертикальные" строки на поиск большего
    end;
  writeln('Max chislo= ',maxS);
  readln();
end.
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)