Задача 3 Урок 18
Primary tabs
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.
1234fsd334rgdrfg46gdfgter5tge56123gergfОтвет: 345
1234fsd334rgdr fgter5tge56123gergfОтвет: 334
1234fsd334rgdr16hyj3f723tge6f57123gergf7Ответ: 777
1234567891011121314\|/-->*<--/o\/_\_\/_/_0_\/_o_\_\_\/_/_/_/_/o\/@\_\_\@\_\_\/_/_/O/_/_/_/_\/_\_\_\_\_\o\_\_\/_/0/_/_/20_/_/@/_\/_\_\_\_\_0_\_\_\_\_\/_/o/_/_/@/2/_/o/_/0/_\[_1_]Ответ: 2021
ПРИМЕЧАНИЕ: задача взята из списка соревнования IFF 2020
var f1: text;
filename, s, n: string;
i, j, c, int, o, max, smax: integer;
a: array [1..30] of string;
begin
filename := 'F:\Pascal\урок 18\input.txt';
assign(f1, filename);
reset(f1);
while not eof(f1) do
begin
readln(f1, s);
c += 1;
a[c] := s;
n := '';
if smax < length(s) then smax := length(s);
for i := 1 to length(s) + 1 do
begin
val(s[i], int, o);
if o = 0 then n += s[i]
else
begin
val(n, int, o);
if int > max then max := int;
n := '';
end;
end;
end;
for i := 1 to c do
for j := 1 to smax do
if length(a[i]) < smax then a[i] += ' ';
for i := 1 to smax do
begin
n := '';
for j := 1 to c do
begin
val(a[j][i], int, o);
if o = 0 then
begin
n += a[j][i];
if j = c then val(n, int, o);
end
else
begin
val(n, int, o);
n := '';
end;
if int > max then max := int;
end;
end;
for i := 1 to c do writeln(a[i], '|');
writeln('Максимальное число: ', max);
readln();
end.- Log in to post comments
- 991 reads