Двадцать четвёртое задание из ЕГЭ по информатике нацелено на обработку символьной информации. При его разборе с учащимися необходимо повторить работу с файлами и файловыми переменными. Учащиеся должны четко понимать: как назначить файл для чтения, как открыть файл для чтения, как считываются данные из файла с помощью файловой переменной и как при этом формируется строка символов, полученных из файла. Работа с данными, полученными из файла используется и при выполнении последующих заданий. Поэтому важно, чтобы участники ЕГЭ отработали данную часть программного кода до автоматизма.
После получения символьной строки содержащей данные из файла пережодим к решению сформулированной в условии задачи. В качестве примера расмотрим пример из демоверсии ЕГЭ по информатики 2021 года.
Текстовый файл состоит не более чем из 106 символов 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