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

Обновлено: 06.07.2024

Проверяемые элементы содержания: Умение создавать собственные программы (10–20 строк) для обработки символьной информации

Выполнение 24 задания ЕГЭ


Плейлист видеоразборов задания на YouTube:

Последовательности (цепочки) символов

24 задание. Демоверсия варианта ЕГЭ по информатике 2021, ФИПИ:


Задание выполняется с использованием прилагаемых файлов


Текстовый файл состоит не более чем из 106 символов X, Y и Z.
Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.
Для выполнения этого задания следует написать программу.

var f: text; i, k, max: integer; s: string; begin assign(f, 'D:\24.txt'); reset(f); readln(f, s); max := 1; k := 1; // кол-во подряд идущих for i := 2 to length(s) do begin if s[i] <> s[i - 1] then begin inc(k); if k > max then max := k; end else k := 1; end; write(max) end.

f=open('D:/24.txt') s=f.readline() m=1 k=1 for i in range(1,len(s)): if s[i]!=s[i-1]: k+=1 m=max(k,m) else: k=1 print(m)

Видеоразбор:

24 задание с сайта К. Полякова, № 1:


Задание выполняется с использованием прилагаемых файлов


В текстовом файле k7-0.txt находится цепочка из символов латинского алфавита A, B, C.

Найдите длину самой длинной подцепочки, состоящей из символов C.

Ответ: 0

begin assign(input, 'k7-0.txt'); var s: string; var c: string; read(s); c := 'C'; while c in s do c := c + 'C'; print(length(c) - 1) end.

24 задание с сайта К. Полякова, № 21:


Задание выполняется с использованием прилагаемых файлов


В текстовом файле k7a-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.

Найдите длину самой длинной подцепочки, состоящей из символов A, B или C (в произвольном порядке).

Ответ: 16

begin assign(input, 'k7a-1.txt'); var s: string; read(s); var k := 0; var maxim := 0; for var i := 1 to length(s) do if s[i] in 'ABC' then begin k += 1; if k > maxim then maxim := k end else k := 0 ; write(maxim) end.

24 задание с сайта К. Полякова, № 26:


Задание выполняется с использованием прилагаемых файлов


В текстовом файле k7a-6.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F.

Найдите длину самой длинной подцепочки, не содержащей гласных букв.

Ответ: 20

begin assign(input, 'k7a-6.txt'); var s: string; read(s); var k := 0; var maxim := 0; for var i := 1 to length(s) do if s[i] in 'BCDF' then begin k += 1; if k > maxim then maxim := k end else k := 0 ; write(maxim) end.

begin var s := readAllText('d:\k7a-6.txt').Trim; var (k, max) := (0, 0); foreach var c in s do if not (c in 'AE') then begin k += 1; if k > max then max := k; end else k := 0; print(max) end.

24 задание с сайта К. Полякова, № 27:


Задание выполняется с использованием прилагаемых файлов


В текстовом файле k7b-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.

begin assign(input, 'k7b-1.txt'); var s: string; read(s); var c := 'EAB'; while c in s do begin if c[length(c)] = 'B' then c += 'E' else if c[length(c)] = 'A' then c += 'B' else if c[length(c)] = 'E' then c += 'A'; end; print(length(c) - 1) end.

Постоянно повторяется фрагмент EAB, поэтому возможны 3 варианта окончания строки:

f=open('k7b-1.txt') s = f.readline() m = 0 i = 0 for char in s: if (char == 'E' and i%3 == 0) or \ (char == 'A' and i%3 == 1) or \ (char == 'B'and i%3 == 2): i += 1 m = max(i,m) elif char == 'E': i = 1 else: i = 0 print(m)

24 задание с сайта К. Полякова, № 33:


Задание выполняется с использованием прилагаемых файлов


В текстовом файле k7c-1.txt находится цепочка из символов латинского алфавита A, B, C, D, E.
Найдите количество цепочек длины 3, удовлетворяющих следующим условиям:

Ответ: 1280

begin assign(input, 'k7c-1.txt'); var s: string; read(s); // весь текст файла var k := 0; var c1 := 'BCD'; var c2 := 'BDE'; var c3 := 'BCE'; for var i := 1 to length(s) - 2 do begin if (s[i] in c1) and (s[i + 1] in c2) and (s[i + 2] in c3) and (s[i] <> s[i + 1]) and (s[i + 1] <> s[i + 2]) then k += 1 end; print(k) end.

24 задание с сайта К. Полякова, № 52:


Задание выполняется с использованием прилагаемых файлов

Ответ: 2 3

Видеоразбор:

24 задание с сайта К. Полякова, № 108:


Задание выполняется с использованием прилагаемых файлов


Текстовый файл 24.txt содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего не более 10 6 символов. Определите длину наибольшей убывающей подпоследовательности.

Ответ: 3

for var i := 2 to length(s) do begin if s[i] < s[i - 1] then

. if k > max then max := k;

begin assign(input, 'D:/24.txt'); var s: string; read(s); // весь текст файла var k := 1; //длина текущей бывающей последовательности символов var max := 0; // макс длина for var i := 2 to length(s) do begin if s[i] < s[i - 1] then begin k += 1; // увеличиваем счетчик длины последовательности if k > max then max := k; end else k := 1; // сбрасываем счетчик для работы со след. последовательностью end; print(max) end.

Работа с числами (цифрами) в текстовом файле

24 задание с сайта К. Полякова, № 87:


Задание выполняется с использованием прилагаемых файлов


Текстовый файл 24-1.txt состоит не более чем из 10 6 символов. Определите максимальное нечётное число, записанное в этом файле.

Ответ: 7642289

begin assign(input, '24-1.txt'); var s: string; var b:integer; read(s); // весь текст файла находится в s var max := 0; // для максимального нечётного числа var num:integer; var strnum:string; // накапливает строковое представление числа strnum:=''; for var i := 1 to length(s)-1 do begin if s[i].IsDigit() then // проверяем очередной символ - цифра ли это strnum += s[i] //добавляем очередную цифру в число else if (strnum <> '') then //если встретилась не цифра, а strnum не пустая строка begin Val(strnum, num, b); // переводим в число if (num mod 2 <> 0) and (num > max) then // условие для поиска макс четного max := num; strnum:=''; // сбрасываем на начальное значение, чтобы накапливать новое число end; end; // проверка на случай, если самое большое нечётное в самом конце строки if (s[length(s)].isdigit()) then begin Val(strnum, num, b); if (num mod 2 <> 0) and (num > max) then max:= num; end; print(max) end.

Работа с отдельными строками файла

24 задание с сайта К. Полякова, № 137:


Задание выполняется с использованием прилагаемых файлов


Текстовый файл 24-s1.txt состоит не более чем из 10 6 заглавных латинских букв ( A..Z ). Текст разбит на строки различной длины.
Определите количество строк, в которых буква J встречается чаще, чем буква E .

Ответ: 482

begin assign(input, '24-s1.txt'); var s: string; var k := 0; while true do // бесконечный цикл begin readln(s); // считываем очередную строку if s = '' then break; // если строка пустая (т.е. достигнут конец файла), выходим if s.Count(c -> c = 'J') > s.Count(c -> c = 'E') then k += 1; end; print(k) end.

Рубрики:

Yatogami


Привет! Сегодня будем учится решать 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.

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