Урок 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
- 576 reads
vedro-compota
Wed, 01/04/2023 - 17:20
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)