Задания
Версия для печати и копирования в MS Word

Тек­сто­вый файл со­дер­жит толь­ко за­глав­ные буквы ла­тин­ско­го ал­фа­ви­та (ABC…Z). Опре­де­ли­те сим­вол, ко­то­рый чаще всего встре­ча­ет­ся в файле сразу после буквы E.

На­при­мер, в тек­сте EBCEEBEDDD после буквы E два раза стоит B, по од­но­му разу  — E и D. Для этого тек­ста от­ве­том будет B.

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

За­да­ние 24

Спрятать решение

Ре­ше­ние.

Для ре­ше­ния этой за­да­чи счи­та­ем стро­ку из файла. Ини­ци­а­ли­зи­ру­ем стро­ко­вую пе­ре­мен­ную s1 со зна­че­ни­ем ABCDEFGHIJKLMNOPQRSTUVWXYZ. По­сим­воль­но пе­ре­би­рая стро­ку из файла, каж­дый раз встре­чая букву E, будем встав­лять в стро­ку s1 сим­вол, иду­щий после буквы E в счи­тан­ной стро­ке, таким об­ра­зом, чтобы в стро­ке s1 со­от­вет­ству­ю­щие сим­во­лы сто­я­ли рядом друг с дру­гом (на­при­мер, если из файла была счи­та­на стро­ка EBEB, стро­ка s1 после вы­пол­не­ния ал­го­рит­ма будет вы­гля­деть так: ABBBCDEFGHIJKLMNOPQRSTUVWXYZ. После этого по­счи­та­ем длину самой длин­ной це­поч­ки сим­во­лов и таким об­ра­зом по­лу­чим ответ.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке Pascal.

var

len, max, count: longint;

s, s1: string;

maxC: char;

f: text;

begin

assign(f,'C:\24.txt');

reset(f);

readln(f, s);

len := length(s);

s1 := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

for i:integer := 1 to len do begin

if ((s[i] = 'E') and (i <> len)) then

s1 := s1.Substring(0, s1.LastIndexOf(s[i+1])) + s[i+1] + s1.Substring(s1.LastIndexOf(s[i+1]));

end;

len := length(s1);

max := 1;

count := 0;

for i:integer := 1 to len-1 do begin

if (s1[i] = s1[i+1]) then count := count + 1

else count := 0;

if count > max then begin

max := count;

maxC := s1[i];

end;

end;

writeln(maxC);

end.

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — Y.

 

Ответ: Y.

 

При­ме­ча­ние. Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

При­ведём дру­гое ре­ше­ние.

var

arr: array ['A'..'Z'] of integer;

i, max: integer;

s: string;

sym, maxIndex: char;

f: text;

begin

assign(f, 'C:\Users\Алек­сандр\Desktop\Ре­шу­ЕГЭ\Вре­мен­ные файлы\24.txt');

reset(f);

readln(f, s);

for i := 1 to s.Length - 1 do

if (s[i] = 'E') then

inc(arr[s[i+1]]);

for sym := 'A' to 'Z' do

if arr[sym] > max then begin

max := arr[sym];

maxIndex := sym;

end;

writeln(maxIndex);

end.

 

При­ведём ре­ше­ние Петра По­ля­ко­ва на языке Python.

from collections import Counter

f=open('24.txt')

s=f.readline()

g=''

for i in range(len(s)-1):

if s[i] == 'E':

g=g+s[i+1]

print(Counter(g).most_common()[0][0])

 

При­ведём ре­ше­ние Са­ла­ма­ти­на Ти­му­ра на языке Python.

f = open('24.txt')

a = 'QWRTYUIOPASDFGHJKLZXCVBNM'

a = sorted(a)

m = 0

zxc = ''

b= f.read()

for i in a:

if b.count('E'+i) > m:

m = b.count('E'+i)

zxc = i

print(zxc)


Аналоги к заданию № 33196: 33494 Все

Раздел кодификатора ФИПИ: