ЕГЭ 2022 Обработка текстовых файлов на языках программирования Pascal и Python на примере задач № 24
Ежова Ю.Л.
МБОУ СШ № 13
17.03.2022
Рекомендации к порядку решения задач
- Создать тестирующую строку и решить задачу для неё, например
x: = ‘ABCCBAAAABCC’ или x = ‘ABCCBAAAABCC’
- Разместить файл с текстом 24.txt в той же директории, что и файл программы
- Подгрузить файл и проверить значение первого элемента, например вывести его на экран
write(a[1]) или print(a[0])
Работа с текстовым файлом (все данные в одной строке)
Python
Pascal
- Объявить файловую переменную
1 способ:
var F : text;
- открыть файл для чтения
- связать переменную файлового типа с файлом на диске
f = open("24.txt")
Assign(F ,’ 24.txt’);
- считать всю строку из файла в переменную a
- открыть файл для чтения
a = f.read()
Reset(F);
- закрыть файл после считывания строки
f.close()
- считать данные из файла в переменную a
2 способ:
Readln(F, a);
with open("24.txt") as f:
- закрыть файл в конце программы
s = f.readline()
Close(F)
Задача 1: Текстовый файл состоит не более чем из 10 6 символов X , Y и Z . Определите длину самой длинной последовательности , состоящей из символов Y . (файл Задание 24 )
Python
Pascal
var m, k, i: integer; s: string; f:text;
f = open("24.txt")
begin
a = f.readline()
f.close()
assign(f, '24.txt'); reset(f); readln(f, s);
k = 0
close(f)
m = 0
m := 0;
k := 0;
for i in a:
if i == "Y":
for i:=1 to Length(s) do
k += 1
if s[i] = 'Y' then
if m
begin
k := k + 1;
m = k
if m
else:
m := k;
k = 0
end
print (m)
else
k := 0;
writeln(m);
end.
a.count ("A"): begin k += 1 k := 0; f.close() for j := 1 to length(s) do print (k) if b = s[j] then k += 1; kol := k; end; begin assign(f, '24.txt'); reset(f); count := 0; // пока не конец файла, считываем построчно while not Eof(f) do begin readln(f, a); if kol ('E', a) kol ('A', a) then count += 1 end; write(count); close(f); end. " width="640"
Задача 2: Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z). Определите количество строк, в которых буква E встречается чаще, чем буква A . (файл Задание 24 )
Python
Pascal
f = open("24.txt")
Var count: integer; a: string; f: text;
// функция, определяющая количество символов b в строке s
k = 0
function kol(b, s: string): integer;
for i in range (1000):
Var j,k: integer;
a = f.readline()
if a.count ("E") a.count ("A"):
begin
k += 1
k := 0;
f.close()
for j := 1 to length(s) do
print (k)
if b = s[j] then k += 1;
kol := k; end;
begin
assign(f, '24.txt'); reset(f); count := 0;
// пока не конец файла, считываем построчно
while not Eof(f) do
begin
readln(f, a);
if kol ('E', a) kol ('A', a) then count += 1
end;
write(count); close(f); end.
= ma: ma = b.count(i) bu = i print(bu) Пример. Исходный файл: GIGA GABLAB AGAAA В этом примере в первой строке две буквы G, во второй и третьей — по одной. Берём вторую строку, т. к. она находится в файле раньше. В этой строке чаще других встречаются буквы A и B (по два раза), выбираем букву B, т. к. она позже стоит в алфавите. В ответе для этого примера надо записать B. " width="640"
Задача 3 : Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z). Необходимо найти строку, содержащую наименьшее количество букв G (если таких строк несколько, надо взять ту, которая находится в файле раньше), и определить, какая буква встречается в этой строке чаще всего . Если таких букв несколько, надо взять ту, которая позже стоит в алфавите. (файл Задание 24 )
f = open("24.txt")
m = 100000
ins = 1
for i in range (1000):
a = f.readline()
if a.count("G")
b = a
m = a.count("G")
ins = i
x="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ma = 0
for i in x:
if b.count(i)= ma:
ma = b.count(i)
bu = i
print(bu)
Пример. Исходный файл:
GIGA
GABLAB
AGAAA
В этом примере в первой строке две буквы G, во второй и третьей — по одной. Берём вторую строку, т. к. она находится в файле раньше. В этой строке чаще других встречаются буквы A и B (по два раза), выбираем букву B, т. к. она позже стоит в алфавите. В ответе для этого примера надо записать B.
mh: mh = len(a[i]) + len(a[i+1]) + 1 k := k + 1; if c 'A' then begin print(mh) count := count + 1; if count maxlen then maxlen := count; end else if countA = 0 then begin countA := 1; i := k; count := count + 1; if count maxlen then maxlen := count; end else if countA = 1 then begin count := k - i; i := k; if count maxlen then maxlen := count; end ; end ; writeln(maxlen); end . " width="640"
Задача 4 : Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A . (файл Задание 24 )
var i, count, maxlen, countA, k: integer; c: char; f: text;
f = open("24.txt")
begin
s = f.read()
f.close()
assign(f,'24.txt'); reset(f);
a = s. split ("A")
maxlen := 0; count := 0;
countA := 0; k := 0;
mh = 0
while not eof(f) do begin
for i in range (len(a)-1):
read(f, c);
if len (a[i]) + len (a[i+1]) + 1 mh:
mh = len(a[i]) + len(a[i+1]) + 1
k := k + 1;
if c 'A' then begin
print(mh)
count := count + 1;
if count maxlen then
maxlen := count; end
else if countA = 0 then begin
countA := 1; i := k; count := count + 1;
if count maxlen then maxlen := count; end
else if countA = 1 then begin
count := k - i; i := k;
if count maxlen then maxlen := count;
end ; end ;
writeln(maxlen); end .
Пример
CBD A MFKDB A JHBB A HJH A HGG
CBD MFKDB JHBB HJH HGG
= 3: if len(a[i]) mh: mh = len(a[i]) print (mh) " width="640"
Задача 5. Текстовый файл содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет ни одной буквы A и при этом не менее трёх букв E . (файл Задание 24 )
f=open("24.txt")
s=f.read()
f.close()
a = s.split("A")
mh=0
for i in range (len(a)-1):
if a[i].count("E") = 3:
if len(a[i]) mh:
mh = len(a[i])
print (mh)
Спасибо за внимание)


Обработка текстовых файлов на языках программирования Pascal и Python на примере задач № 24 (88.14 KB)

