Задание 3 урок 19
Primary tabs
{Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке
не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом
считаются подряд идущие цифры не только по горизонтали, но и по вертикали. }
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.
- Log in to post comments
- 637 reads
vedro-compota
Wed, 02/09/2022 - 20:26
Permalink
разбить на на подпрограммы
разбить на на подпрограммы
_____________
матфак вгу и остальная классика =)