Задания
Версия для печати и копирования в MS Word
Тип 24 № 40999
i

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

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

За­да­ние 24

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

Ре­ше­ние.

Для ре­ше­ния дан­ной за­да­чи будем по­сим­воль­но счи­ты­вать тек­сто­вый файл. Объ­явим пе­ре­мен­ную c, ко­то­рая будет хра­нить оче­ред­ной счи­тан­ный сим­вол. Далее объ­явим пе­ре­мен­ную countA, в ко­то­рой будем хра­нить число сим­во­лов A в те­ку­щей по­сле­до­ва­тель­но­сти. Также объ­явим пе­ре­мен­ные k и max. Пер­вая нужна для опре­де­ле­ния длины каж­дой по­сле­до­ва­тель­но­сти сим­во­лов, среди ко­то­рых нет сим­во­лов E, вто­рая  — для хра­не­ния мак­си­маль­ной длины такой по­сле­до­ва­тель­но­сти. Если будет встре­чен сим­вол E и пе­ре­мен­ная countA будет боль­ше двух, будет срав­ни­вать­ся те­ку­щая длина по­сле­до­ва­тель­но­сти со зна­че­ни­ем в пе­ре­мен­ной max. Если те­ку­щая длина боль­ше, пе­ре­мен­ная max пе­ре­за­пи­сы­ва­ет­ся.

 

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

var k, max, countA: integer;

c: char;

f: text;

begin

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

reset(f);

k := 0;

max := 0;

countA := 0;

while not Eof(f) do begin

read(f, c);

if (c = 'E') then begin

if countA > 2 then begin

if k > max then max := k;

end;

k := 0;

countA := 0;

end

else begin

if c = 'A' then countA := countA + 1;

k := k + 1;

end;

end;

if k > max then

max := k;

writeln(max);

end.

 

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

 

Ответ: 275.

 

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

 

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

uses school;

var s2:=new List; //спи­сок в ко­то­рый внесём ко­ли­че­ство букв в сло­вах

var s:=readalltext('24.txt');

var s1:=ReplaceMany(s,'E', ' ').towords; //s1 ста­но­вит­ся сло­ва­ми без букв E

begin

for var i:=0 to s1.length-1 do //пе­ре­бор от 0 по­зи­ции до «ко­ли­че­ство слов минус 1»

if s1[i].CountOf('A')>=3 then s2.add(s1[i].Length); //если в i-ом слове ко­ли­че­ство «А» боль­ше или равно 3 то до­бав­ля­ем в спи­сок ко­ли­че­ство букв в слове

print(s2.Max) //пе­чать мак­си­маль­но­го ко­ли­че­ства букв

end.

 

При­ведём ре­ше­ние Да­ни­и­ла Ру­ба­на на языке Python.

f=open('24.txt')

N=f.readline()

q= 0

t= []

r=[]

for y in range(len(N)):

t=[]

while N[y]!='E' and y < (len(N)-1):

t.append(N[y])

if N[y]=='A':

q+=1

y+=1

if q >=3 and (len(t))>(len(r)):

r=t

q=0

print(len(r))

 

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

f = open('24.txt')

maxlen = 0

for i in f.readline().split('E'):

if i.count('A') > 2:

maxlen = max(maxlen,len(i))

print(maxlen)


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