задача 3 урок 19
Primary tabs
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.Примеры:
fsd334rgd rfg46gdfg ter5tge56 123gergfОтвет: 345
fsd334rgd r fg ter5tge56 123gergfОтвет: 334
fsd334rgd r16hyj3f7 23tge6f57 123gergf7Ответ: 777
\|/ -->*<-- /o\ /_\_\ /_/_0_\ /_o_\_\_\ /_/_/_/_/o\ /@\_\_\@\_\_\ /_/_/O/_/_/_/_\ /_\_\_\_\_\o\_\_\ /_/0/_/_/20_/_/@/_\ /_\_\_\_\_0_\_\_\_\_\ /_/o/_/_/@/2/_/o/_/0/_\ [_1_]Ответ: 2021
program task_3_lesson19;
type str = array[1..31] of string; // строка
str2x = array[1..31] of str; // массив строк - 2х мерный
procedure printArr(a: str2x); // печать массива
var i, j: integer;
begin
for i := 1 to 30 do
begin
for j := 1 to 30 do
write(a[i][j], ' ');
writeln();
end;
end;
function strText(s: string) : str; // заполнение одной строки массива
var i: integer;
s1: str;
begin
for i := 1 to length(s) do
s1[i] := s[i];
result := s1;
end;
function maxGor(s: str2x): integer; // максимум по горизонтали
var i, j, n, m, code: integer;
p: string;
begin
p := '';
m := 0;
for i := low(s) to high(s) do
for j := low(s[i]) to high(s[i]) do
begin
if ((s[i][j] >= '0') and (s[i][j] <= '9')) then
p := p + s[i][j]
else
begin
val(p, n, code);
p := '';
end;
if (n >= m) then
m := n;
end;
result := m;
end;
function maxVer(s: str2x) : integer; // максимум по вертикали
var i, j, n, m, code: integer;
p: string;
begin
p := '';
m := 0;
for i := 1 to 30 do
for j := 1 to 31 do
begin
if ((s[j][i] >= '0') and (s[j][i] <= '9')) then
p := p + s[j][i]
else
begin
val(p, n, code);
p := '';
end;
if (n >= m) then
m := n;
end;
result := m;
end;
var f1: text;
s, filename: string;
s1: str;
s2: str2x;
i, j: integer;
numG, numV, numMax: integer; // максимум по горизонтали и вертикали
begin
i := 1;
filename := 'C:\Users\XE\Documents\Pascal\input3.txt';
assign(f1, filename);
reset(f1);
while not eof(f1) do
begin
readln(f1,s);
s1 := strText(s);
for j := 1 to 30 do
s2[i][j] := s1[j];
i := i + 1;
end;
printArr(s2);
numG := maxGor(s2);
numV := maxVer(s2);
if (numG >= numV) then
numMax := numG
else
numMax := numV;
write('Maximalnoe chislo: ',numMax);
readln
end.Консоль
\ | /
- - > * < - -
/ o \
/ _ \ _ \
/ _ / _ 0 _ \
/ _ 9 0 3 _ \ _ \
/ _ / _ / _ / _ / o \
/ @ \ _ \ _ \ @ \ _ \ _ \
/ _ / _ / O / _ / _ / _ / _ \
/ _ \ _ \ _ \ _ 7 _ \ o \ _ \ _ \
/ _ / 0 / _ / _ / 4 0 _ / _ / @ / _ \
/ _ \ _ 5 0 \ _ \ _ 0 _ \ _ \ _ \ _ \ _ \
/ _ / o / _ / _ / @ / 2 / _ / o / _ / 0 / _ \
| _ 1 _ :
Maximalnoe chislo: 74021- Log in to post comments
- 1320 reads
vedro-compota
Sun, 11/07/2021 - 13:32
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)