Урок 19. Задача 3.
Primary tabs
Имеется текстовый файл в котором содержится не более 30 строк, в каждой строке не более 30 символов (пробелы тоже считаются символами). Цифры и другие символы перемешаны в каждой строке.
Задание: найдите максимальное число, c учетом того, что числом считаются подряд идущие цифры не только по горизонтали, но и по вертикали.
type AR = array[1..20, 1..20] of string;
type BR = array[1..100] of integer;
var arS :AR;
arI :BR;
f1 :text; // тип для открытия текстового файла
filename, s, str1, str2 :string;
count, i, max :integer;
function make_array(s :string; count :integer) :AR;
var i :integer;
begin
for i := 1 to length(s) do
arS[count, i] := s[i];
make_array := arS;
end;
function make_array_int(str1 :string) :BR;
var i, v_I, ct :integer;
st :string;
begin
ct := 0;
for i := 1 to length(str1) do
if str1[i] <> ' ' then
st := st + str1[i]
else
begin
val(st, v_I);
st := '';
ct += 1;
arI[ct] := v_I;
end;
make_array_int := arI;
end;
function make_string(var str1, str2 :string; arS :AR) :string;
var i, j :integer;
fl_g, fl_v :boolean;
begin
fl_g := false;
fl_v := false;
for i := low(arS) to high(arS) do
for j := low(arS[i]) to high(arS[i]) do
begin
if (arS[i, j] >= '0') and (arS[i, j] <= '9') then
begin
fl_g := true;
str1 := str1 + arS[i, j];
end
else
if fl_g then
begin
str1 := str1 + ' ';
fl_g := false;
end;
if (arS[j, i] >= '0') and (arS[j, i] <= '9') then
begin
fl_v := true;
str2 := str2 + arS[j, i];
end
else
if fl_v then
begin
str2 := str2 + ' ';
fl_v := false;
end;
end;
str1 := str1 + str2;
make_string := str1;
end;
begin
count := 0;
filename := 'C:\Pascal\U_0\input.txt'; // путь к файлу
assign(f1, filename);
{$I-} reset(f1); {$I+} // попытка открыть файл на чтение с подавлением ошибки
if IOResult <> 0 then // если есть ошибки
begin
writeLn('File ', filename, ' ne naiden!');
end else // если удалось открыть на чтение
begin
writeLn('File ', filename, ' suchectvuet. I vot ego soderzimoe:');
while not eof(f1) do
begin
count += 1;
readln(f1, s);
make_array(s, count);
end;
end;
make_string(str1, str2, arS);
make_array_int(str1);
for i := 1 to high(arI) do
if arI[i] > max then
max := arI[i];
write(max);
readln();
end.
- Log in to post comments
- 1649 reads
vedro-compota
Sun, 10/09/2022 - 14:11
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)
Dennis80
Sun, 10/09/2022 - 14:27
Permalink
1
1