Задача 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
- 191 reads