Задача 4 Урок 20
Primary tabs
Задача 4 Урок 20 Дан текстовый файл, в котором с в ASCII-стиле нарисованы цепочки из цифр, которые связаны по горизонтали и вертикали.
Все цепочки составляют одно дерево, которое устроено так:
всегда есть общий корень и это цифра
-по горизонтали цепочка не разрывается пробелами, соединяется же с помощью -последовательностей знака - (тире).
-по вертикали цепочка не разрывается переносом строк, соединяется же с помощью вертикальных последовательностей символа | (вертикального разделителя).
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; // - к циклу K
end;
if (str[k]='-') then // если это тире
k:=k-1; // то - к циклу K
if (str[k]='|') then // если это прямая скобка
l:=l-1; // то - к циклу l (Для переход между строками)
end;
end;
begin
filename := 'C:\Users\user\Documents\cepochkii.txt'; // путь к файлу
assign(f1, filename); // связывание переменной дескриптора с путём к файлу
reset(f1); // открываем файла для чтения
writeln('========nachalo faila=====');
i:=1; // счётчик +1
while not eof(f1) do // пока не достигнут конец файла
begin
readln(f1, s); // читаем из него очередную строку
writeln(s); // выводим очерепдную строку
ms[i]:=s; // записываем в масиив эту строку
i:=i+1; // + к счётчику
end;
writeLn('========= konez faila =========');
naib:=0; // присваиваем к переменной 0
n:=0; // присваиваем к переменной 0
for j:=1 to i do // счётчик от 1 до i
begin
s:=ms[j]; // записываем очередную строку в переменную
for u:=1 to length(s) do // цикл от 1 до max символу в строке
begin
if (s[u]>='0') and (s[u]<='9') and (u=length(s)) then // если это цифра и последняя строка
begin
kk:=u; // то записываем max число в переменную
ll:=j-1; // минусуем j(для изьежения обработки последнего элеимента) и записываем в ll (для перехода между строками)
proc(ms,ll,kk,n); // направляемся в процедуру
if (naib<n) then // если наиб меньше N
naib:=n; // то присваем знач n в naib
n:=0; // обнуляем n
end;
end;
end;
writeln('naib= ',naib);
readln();
end.
Вывод консоли:
========nachalo faila=====
1------4--------------5-------6--------7
| |
| |-------5---------8
|
|-------6--------7--7-------9------8---1----5---3
========= konez faila =========
naib= 10
- Log in to post comments
- 608 reads