Задача 4 Урок 18

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

Дан текстовый файл, в котором с в ASCII-стиле нарисованы цепочки из цифр, которые связаны по горизонтали и вертикали.
Все цепочки составляют одно дерево, которое устроено так:
всегда есть общий корень и это цифра
по горизонтали цепочка не разрывается пробелами, соединяется же с помощью последовательностей знака - (тире).
по вертикали цепочка не разрывается переносом строк, соединяется же с помощью вертикальных последовательностей символа | (вертикального разделителя).
Размер схемы не более чем 100 на 100 символов.

Примеры:

1------4--------------5-------6--------7
       |              |
       |              |-------5---------8
       |
       |-------6--------7--7-------9------8---1----5---3

Ответ: 10

1------4------8--------5-------6--------7
       |      |        |
       |      |        |-------5---------8
       |      |                
       |      |--------8-8-8---8----8
       |     
       |-------6--------7--7
       |--------------5-5--5--5 

Ответ: 8

program U18Z4;
Var ms:array [1..100] of string;
    f1:text;
    filename,s: string;
    i,j,n,u,kk,ll,naib:integer;
procedure proc(mms: array of string;l,k:integer; var nn:integer);
var str: string;
begin
  while (k>=1) and(l>=0) do
  begin
    str:=mms[l];
    if (str[k]>='0') and (str[k]<='9') then
    begin
        nn:=nn+1;
        k:=k-1;
    end;
    if (str[k]='-') then
      k:=k-1;
    if (str[k]='|') then
      l:=l-1;
  end;
end;
begin
  filename := 'C:\Users\admin\Desktop\pascal\u18z4.txt';
  assign(f1, filename);
  reset(f1);
  writeln('========nachalo faila=====');
  i:=1;

  while not eof(f1) do
    begin
      readln(f1, s);
      writeln(s);
      ms[i]:=s;
      i:=i+1;

    end;
  writeLn('========= konez faila =========');
  naib:=0;
  n:=0;
  for j:=1 to (i-1) do
  begin
    s:=ms[j];
    for u:=1 to length(s) do
    begin
      if (s[u]>='0') and (s[u]<='9') and (u=length(s)) then
      begin
        kk:=u;
        ll:=j-1;
        proc(ms,ll,kk,n);
        if (naib<n) then
        begin
          naib:=n;
        end;
        n:=0;
      end;
    end;
  end;
  writeln('naib= ',naib);
  readln();
end.  
vedro-compota's picture

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

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