Присоединиться

Информатика·Обработка символьных строк·11 класс

Пример. Исходный файл:GIGAGABLABNOTEBOOKAGAAAВ этом примере во всех

Условие

Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).В строках, содержащих менее 25 букв G, нужно определить и вывести максимальное расстояние между одинаковыми буквами в одной строке. Пример. Исходный файл:GIGAGABLABNOTEBOOKAGAAAВ этом примере во всех строках меньше 25 букв G. Самое большое расстояние между одинаковыми буквами — в третьей строке между буквами O, расположенными в строке на 2-й и 7-й позициях. В ответе для данного примера нужно вывести число 5.Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.Задание 24

Ответ

1001

Решение по шагам

  1. Как рассуждать

    Решение. Будем последовательно считывать строки из файла. В каждой считанной строке будем считать количество букв G и записывать это количество в счётчик count. Если количество букв G в строке будет меньше 25, будем считать расстояние между одинаковыми буквами в строке. Для этого для каждой буквы алфавита с помощью метода LastIndexOf() будем находить последнюю позицию буквы в строке, а с помощью метода IndexOf() будем находить первую позицию буквы в строке. Вычислив разность между последней и первой позициями, будем сравнивать полученный результат с переменной max. Если результат будет больше текущего значения переменной max, то будем присваивать переменной max значение вычисленной разности. Приведём решение данной задачи на языке PascalABC.var i, count, max, submax: integer;j: char;s: string;c: array['A'..'Z'] of integer;f: text;begin assign(f,'C:\inf_26_04_21_24.txt'); reset(f); s := ''; max := 0; while not eof(f) do begin count := 0; readln(f, s); for i := 1 to s.Length do begin if s[i] = 'G' then count := count + 1; end; if count < 25 then for j := 'A' to 'Z' do begin submax := s.LastIndexOf(j) - s.IndexOf(j); if submax > max then max := submax; end; end; writeln(max);end. В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ —

Осталось ещё 2 шага — откроются после входа:

  • Шаг 2
  • Шаг 3
Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка символьных строк»