Урок 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
- 1070 reads
vedro-compota
Sun, 10/09/2022 - 14:11
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)
Dennis80
Sun, 10/09/2022 - 14:27
Permalink
1
1