Задача 3 Урок 19
Primary tabs
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.
type
strArr = array[1..30] of string;
var
f1: text;
filename, s: string;
i, max : integer;
str_arr: strArr;
procedure get_max_str(str: string; var max: integer); //находим максимальное из строки
var
i, num, code: integer;
num_str: string;
begin
i := 1;
while(i <= length(str)) do
begin
if((str[i] >= '0') AND (str[i] <= '9')) then
begin
num_str := '';
while((str[i] >= '0') AND (str[i] <= '9') AND (i <= length(str))) do
begin
num_str += str[i];
i += 1;
end;
val(num_str, num, code);
if(code = 0) then
if(num > max) then
max := num;
end
else
i += 1;
end;
end;
procedure col_to_arr(str: string; var arr: strArr); //сохраняем столбцы, как элементы массива строк
var
i: integer;
begin
for i := 1 to length(str) do
arr[i] += str[i];
end;
begin
str_arr[1] := '';
max := 0;
filename := 'D:\User\Pascal\lesson18\task_3\input.txt';
assign(f1, filename);
reset(f1);
while(NOT eof(f1)) do
begin
readln(f1, s);
get_max_str(s, max);
col_to_arr(s, str_arr);
writeln(s);
end;
for i := low(str_arr) to high(str_arr) do
begin
if(str_arr[i] = '') then
break;
get_max_str(str_arr[i], max);
end;
writeln();
writeln('Maximalnoe: ', max);
readln();
end.
- Log in to post comments
- 1055 reads