Алгоритмическая задача №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
- 947 reads