ЕГЭ по информатике 2021. Задание 24 (Обработка символьной информации)

ЕГЭ по информатике 2021. Задание 24
(Обработка символьной информации)
Двадцать четвёртое задание из ЕГЭ по информатике нацелено на обработку символьной
информации. При его разборе с учащимися необходимо повторить работу с файлами и
файловыми переменными. Учащиеся должны четко понимать: как назначить файл для чтения,
как открыть файл для чтения, как считываются данные из файла с помощью файловой
переменной и как при этом формируется строка символов, полученных из файла. Работа с
данными, полученными из файла используется и при выполнении последующих заданий.
Поэтому важно, чтобы участники ЕГЭ отработали данную часть программного кода до
автоматизма.
После получения символьной строки содержащей данные из файла пережодим к
решению сформулированной в условии задачи. В качестве примера расмотрим пример из
демоверсии ЕГЭ по информатики 2021 года.
Текстовый файл состоит не более чем из 10
6
символов X, Y и Z. Определите максимальное
количество идущих подряд символов, среди которых каждые два соседних различны. Для
выполнения этого задания следует написать программу. Скачать файл
Главное здесь правильно понять задание. Обязательно надо привести пример и с его
помощью пояснить - в чем заключаеися поиск решения данного задания. К примеру расмотрим
последовательность символов: XYZZYXZYYXZXYXZXY. Найдем в этой цепочке максимальную
длину идущих подряд символов, среди которых каждые два соседних различны. В нашем примере
оказалось три фрагмента идущих подрям символов, у которых нет двух «одинаковых соседей».
Наибольшее количство символов содержит желтая цепочка символов. Задание стало понятным,
переходим к разработке алгоритма.
Алгоритм будет следующий: Берём символ, сравниваем его со следующим, если они разные,
то добавляем к счётчику 1. Счётчик начинает работать с 1, чтобы засчитать самый первый символ.
Если символы одинаковые, то сбрасываем счётчик на 1 (первоначальное значение).
Таким образом, у нас будет разная длина цепочек не повторяющихся символов в нашем
файле. Но нам нужно в ответе написать наибольшую длину. Количество символов в первой
цепочке надо запомнить, чтобы в последствии сравнить с количеством следующей и запомниить
максимальное с целью вывода ответа на консоль. В начале количество символов,
удовлетворяющих условию задачи, равно нулю. Если в строке не окажеся цепочки из не
повторяющихся символов, то ответ к заданию. будет нулевым. Но такая ситуация
маловероятна. Как только обнаружилась цепочкка сравниваем её количество символов с
первоначальны значением и делаем замену на большее найденное количество символов
цепочки. И так повторяем до тех пор, пока не проверим всю строку.
Так выглядит программа на языке Pascal, которая решит нашу задачу.
prugramm z24;
var
f: file of char;
c1, c2: char;
c, m : integer;
begin
assign (f, 'c:\24.txt');
reset (f);
c := 1;
m := 0;
read (f, c1);
while not eof (f) do begin
read (f, c2);
if c1 <> c2 then begin
c := c + 1;
if c > m then m := c;
end
else begin
c := 1;
end;
c1:=c2;
end;
Writeln(m);
close (f);
end.
В ответе получится число 35.
Ответ 35