Текстовый файл состоит не более чем из 10 6 символов stock

Обновлено: 28.06.2024


Привет! Сегодня будем учится решать 24 задание из ЕГЭ по информатике 2021.

Двадцать четвёртое задание из ЕГЭ по информатике нацелено на обработку символьной информации.

В этом уроке будем решать задачи 24 задания с помощью языка программирования Pascal.

Перейдём к Демонстрационному варианту из ЕГЭ по информатике 2021.


Задача (Задание 24, Демонстрационный вариант 2021)

Текстовый файл состоит не более чем из 10 6 символов X, Y и Z.

Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.

Для выполнения этого задания следует написать программу.

В начале посмотрим, как считать посимвольно файл.

В данном примере сам текстовый файл должен находиться по адресу: "c:\24.txt".

В цикле while с помощью команды read(f, c) считывается из файла очередной символ в переменную c и распечатывается на экран с помощью команды writeln(c).

Т.к. количество символов большое в этом файле, убедившись, что считывание происходит нормально, можно нажать на кнопку "Завершить".

В данной задаче нужно посчитать, на сколько длинная цепочка символов есть в нашем файле, в которой не идут два подряд одинаковых символа.


ЕГЭ по информатике 2021 - задание 24 (Демонстрационная версия)

Алгоритм будет следующий: Берём символ, сравниваем его со следующим, если они разные, то добавляем к счётчику 1. Счётчик начинает работать с 1, чтобы засчитать самый первый символ. Если символы одинаковые, то сбрасываем счётчик на 1 (первоначальное значение).

Таким образом, у нас будет разная длина цепочек не повторяющихся символов в нашем файле. Но нам нужно в ответе написать наибольшую длину. Для этого мы будем использовать механизм для нахождения максимального значения, который был описан в статье по 17 заданию из ЕГЭ по информатике 2021.

Напишем программу на языке Pascal, которая решает нашу задачу.

После запуска программы на экране высветится число 35.

Следующая тренировочная задача из 24 задания ЕГЭ по информатике 2021.


Задача (Последовательность одного символа)

Текстовый файл состоит не более чем из 10 6 символов L, D и R. Определите длину самой длинной последовательности, состоящей из символов R. Хотя бы один символ R находится в последовательности.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Здесь логика следующая: В цикле считываем очередной символ. Если это символ R, то к счётчику прибавляем 1. Если встретили не символ R, то счётчик сбрасываем на ноль. Попутно в переменной max сохраняем максимальное значение для счётчика.

Ещё одна задача на понимание из 24 задания ЕГЭ по информатике 2021.


Задача (Последовательность трёх символов)

Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ. (составленной из фрагментов XYZ, последний фрагмент может быть неполным).

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Пусть в начале показания счётчика равно нулю. Если мы находим нужный нам символ в нужной последовательности, то прибавляем к счётчику 1. Если последовательность сбивается, то ставим счётчик в ноль.

На рисунке представлен данный алгоритм. В нижней строке указано показание счётчика в момент анализа символа.


ЕГЭ по информатике 2021 - задание 24 (Цепочка символов)

На данном рисунке максимальная длина цепочки нужных символов равна 9.

Видим, что для символа X, когда он находится на своём месте, остаток от деления значения счётчика на 3 равен 0.

Для символа Y, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 1.

Для символа Z, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 2.

Мы смотрим остаток от деления на 3, потому что у нас длина звена равна трём (XYZ).

Таким образом, мы и наш анализ очередного символа привяжем к показанию счётчика:

Важный момент: Если нужную цепочку прервал символ X, то нужно счётчик сразу выставить в 1, иначе может произойти такая ошибка:


ЕГЭ по информатике 2021 - задание 24 (Цепочка символов 2)

Т.е. первые три нужных символа в цепочке алгоритм не засчитал.

Поэтому мы не просто сбрасываем счётчик в ноль, а прописываем условие:

Продолжаем набирать обороты в 24 задании из ЕГЭ по информатике 2021.


Задача (Проверяем соседей символа)

Текстовый файл состоит не более чем из 10 6 символов A, B и C.

Определите максимальное количество идущих подряд символов, каждый из которых имеет отличное значение от своих соседей. Первый и последний символ в строке не могут входить в искомую последовательность.

Для выполнения этого задания следует написать программу.

Задача похожа на демонстрационный вариант. Здесь три символа участвуют в каждой итерации.

Посмотрим ещё не маловажные примеры из 24 задания ЕГЭ по информатике 2021.


Задача (Симметричные символы)

В файле хранится строка из символов. Длина строки не более 10 6 .

Сколько пар символов в строке являются симметричными? Симметричной парой называют такие два символа, которые расположены на одинаковом удалении от концов строки.

Например, в строке mdtdeeftkm три симметричных пары – mm, tt и ee.

Здесь удобнее использовать другой шаблон для считывания символов.

Здесь есть строка s, в которой находятся все символы из нашего файла. В цикле for можно перебрать каждый символ и проанализировать его.

Удобство данного метода состоит в том, что мы может сразу посмотреть, какие символы находятся в середине строки или в конце.

К строке можно обращаться, как к массиву. Тогда в a[1] - Будет первый символ строки, в a[2] - второй и т.д.

Чтобы посмотреть последний символ строки, нужно обратиться к элементу a[Length(s)].

Теперь легко написать программу для нашей задачи:

Проходим в цикле for до половины строки (Length(s) div 2) и анализируем симметричные символы с обеих концов строки.

Если символы равны, то прибавляем к счётчику 1.


Ответ: 19101

Текстовый файл состоит не более чем из 10 6 заглавных латинских букв (A..Z). Текст разбит на строки различной длины. Определите количество строк, в которых встречается комбинация F?O, где вопросительный знак обозначает один любой символ.

Чтобы считать файл построчно, можно использовать следующий шаблон:

Данный фрагмент кода будет печатать поочерёдно все строки из файла c:\24_5.txt.

Обратите внимание в данном шаблоне на тип данных переменной f.

Когда мы считывали по одному символу, для переменной f был тип данных file of char.

Когда мы считываем построчно, для переменной f тип данных выбираем text.

Так же команда для считывания строки становится readln(f, s);. Переменная s имеет тип string.

Напишем решение для данной задачи:

После считывания очередной строки, мы проверяем с помощью цикла for, есть ли комбинация указанных символов. Если есть, прибавляем к счётчику 1 и выходим из цикла for с помощью команды break.

Читайте также: