Алгоритмическая задача №3.Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов
Primary tabs
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.
Примеры:fsd334rgd rfg46gdfg ter5tge56 123gergfОтвет: 345
fsd334rgd r fg ter5tge56 123gergfОтвет: 334
fsd334rgd r16hyj3f7 23tge6457 123gergf7Ответ: 6457
program read_file_max_value;
type str_arr = array[1..4] of string;
var f1 : text; // секция обьявления переменных
filename, s, symb, acc: string;
res, j, i, check_res,code : integer;
arr : str_arr;
begin // начало тела основной программы
filename :='/home/serg/file_pascal.txt';
assign( f1,filename );
reset(f1);
res := 0;
i := 1;
while not eof(f1) do
begin
readln(f1, s);
j := 1;
// writeln(length(s)); //длина строки
arr[i] := s; // добавляем в массив очередную строку для
// последующего вертикального подсчета
while(j <= length( s )) do // обход и подсчет горизонталных строк
begin
symb := s[j];
acc := '';
while(symb >= '0') and (symb <= '9') do
begin
acc += symb; // накапливаем строку
j += 1;
if (j <= length(s)) then // если не вышли за длинну строки
symb := s[j]
else
break;
end;
if(acc <> '') then
begin
Val(acc, check_res, code); // преобразуем строку
if(check_res > res) then
res := check_res;
end;
j += 1;
end;
i += 1; // увеличиваем индекс массива arr
end;
writeln(res); // результат горизонтального подсчета
for i := 1 to high(arr) do // уравниваем длинну элементов массива
begin // по длине первого элемента
if high(arr[i]) < high(arr[1]) then
begin
while(high(arr[i]) <> high(arr[1])) do
arr[i] += ' ';
end;
// writeln(high(arr[i])); //длина строки
end;
check_res := 0;
for i := 1 to high(arr[1]) do // обход массива для вертикального подсчета
begin
s := '';
j := 1;
while(j <= high(arr)) do
begin
if (arr[j][i] >= '0') and (arr[j][i] <= '9') then
begin
s += arr[j][i]; // накапливаем строку
end;
j += 1;
Val(s, check_res, code); // преобразуем строку
if check_res > res then
res := check_res;
end;
end;
writeln(res); // результат
readln();
end. // завершение программы
- Log in to post comments
- 1507 reads