Урок 19 Задача 3
Primary tabs
begin WriteLn('Put k failu programmy: '); WriteLn(ParamStr(0)); readln(); end.
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.
type massiv = array[1..100] of string; var m: massiv; f1:text; // тип для открытия текстового файла filename, s, s1, s2: string; k, i, j, a: integer; function stolb (m: massiv; j, i, k: integer): string; begin begin s2:= ''; for j:= j to k do s2:= s2 + m[j][i]; end; result:= s2; end; function chislo (x: string; y, a: integer): integer; var b, i: integer; n: string; begin b:= 0; i:= 0; n:= ''; while not (i > y) do begin i:= i+1; if (x[i]>='0')and(x[i]<='9') then begin for i:= i to y do if not ((x[i]>='0')and(x[i]<='9')) then break else n:= n + x[i]; val(n, b); n:= ''; if b > a then a:= b; end; end; result:= a; end; function prov (m: massiv; j, i, k, a: integer): integer; begin s2:= stolb (m, j, i, k); a:= chislo (m[j], length(m[j]), a); a:= chislo (s2, k, a); result:= a; end; begin k:= 0; a:= 0; filename := 'C:\Users\user\AppData\Local\Temp\input.txt'; // путь к файлу assign(f1, filename); reset(f1); while not eof(f1) do begin k:= k+1; readln(f1, s); m[k]:= s; writeln(s); end; for j:=1 to k do for i:= 1 to length(s) do if (m[j][i]>='0')and(m[j][i]<='9') then a:= prov (m, j, i, k, a); writeln; writeln('Ответ: ', a); readln(); end.
- Log in to post comments
- 424 reads
vedro-compota
Wed, 01/04/2023 - 17:20
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)