задача 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
- 1006 reads
vedro-compota
Sun, 11/07/2021 - 13:32
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)