Задание 3 урок 19

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

Задание 3 урок 19

program U18Z3;
Var mas:array [1..30] of string;
    f1:text;
    filename, s,s1, strNum: string;
    i,j,max,a,b:integer;

procedure PoiskMax(var str:string;var pM:integer);
var ch:integer;
begin
  val(str,ch);
  str:='';
  if (ch>pM) then
    pM:=ch;
  ch:=0;
end;

begin
  filename := 'C:\Users\qwe\Desktop\text.txt';
  assign(f1, filename);
  reset(f1);
  writeln('========nachalo faila=====');
  i:=0;
  while not eof(f1) do
    begin
      i:=i+1;  //счетчик строк
      readln(f1, s);
      writeln(s);
      mas[i]:=s;
    end;
  writeLn('========= konez faila =========');
  max:=0;
       //проверка по горизонтали
  for j:=1 to i do
  begin
    s:=mas[j];
    strNum:='';
      for a:=1 to length(s) do
      begin
        if (s[a]>='0') and (s[a]<='9') then
          strNum:=strNum+s[a]
        else
          PoiskMax(strNum,max);
      end;
  end;
         //проверка по вертикали
  for j:=1 to i do
  begin
    s:=mas[j];
    for a:=1 to length(s) do
      if (s[a]>='0') and (s[a]<='9') then
      begin
        strNum:=strNum+s[a]; //запись цифр по вертикали
        for b:=j+1 to i do
        begin
          s1:=mas[b];
          if (s1[a]>='0') and (s1[a]<='9') then
            strNum:=strNum+s1[a]
          else
            break;  //переход на нижележащую строку
        end;
        PoiskMax(strNum,max);
      end;
  end;
  writeln('max=',max);
  readln();
end.       
vedro-compota's picture

разбить на на подпрограммы

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