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

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

begin
  WriteLn('Put k failu programmy: ');
  WriteLn(ParamStr(0));
  readln();
end.
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.

Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.

type
  massiv = array[1..100] of string;
var
  m: massiv;
  f1:text; // тип для открытия текстового файла
  filename, s, s1, s2: string;
  k, i, j, a: integer;

function stolb (m: massiv; j, i, k: integer): string;
begin
  begin
    s2:= '';
    for j:= j to k do
      s2:= s2 + m[j][i];
  end;
  result:= s2;
end;

function chislo (x: string; y, a: integer): integer;
var
  b, i: integer;
  n: string;
begin
  b:= 0;
  i:= 0;
  n:= '';
  while not (i > y) do
   begin
     i:= i+1;
     if (x[i]>='0')and(x[i]<='9') then
     begin
       for i:= i to y do
         if not ((x[i]>='0')and(x[i]<='9')) then
           break
         else
           n:= n + x[i];
       val(n, b);
       n:= '';
       if b > a then
         a:= b;
     end;
  end;
  result:= a;
end;

function prov (m: massiv; j, i, k, a: integer): integer;
begin
  s2:= stolb (m, j, i, k);
  a:= chislo (m[j], length(m[j]), a);
  a:= chislo (s2, k, a);
  result:= a;
end;

begin
  k:= 0;
  a:= 0;
  filename := 'C:\Users\user\AppData\Local\Temp\input.txt'; // путь к файлу
  assign(f1, filename);
  reset(f1);
  while not eof(f1) do
  begin
    k:= k+1;
    readln(f1, s);
    m[k]:= s;
    writeln(s);
  end;
  for j:=1 to k do
    for i:= 1 to length(s) do
      if (m[j][i]>='0')and(m[j][i]<='9') then
        a:= prov (m, j, i, k, a);
  writeln;
  writeln('Ответ: ', a);
  readln();
end.
vedro-compota's picture

засчитано

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