
Gavinadar
7 год назад
Ребята, помогите пожалуйста решить задачу на Pascal ABC (с подробным объяснением каждого шага в программе)
Дана строка. Слова в предложении разделены пробелом. Предложение заканчивается "." "!" "?". Определить слово с максимальным числом букв "а" и количество букв "а" в нем.
Заранее благодарю за написанные программы.
ОТВЕТЫ

Светозарович
Jul 10, 2019
Var st,stMax1,stMax:string;
L,i,maxA,colA:integer;
begin
readln(st);{считываем строку}
L:=length(st);{получаем длину строки}
colA:=0;{количество букв а в слове}
maxA:=0;{максимальное количество букв а в слове}
stMax1:=;{то, куда мы будем записывать слово}
for i:=1 to L do begin {проходим по строке L раз}
if ((st[i]lt;gt; ) and (st[i]lt;gt;.) and (st[i]lt;gt;!) and (st[i]lt;gt;)) then {если символ не пробел, не точка, не воскл. знак и не вопрос. знак то записываем в строку одну букву}
stMax1:=stMax1+st[i];{буква+буква+буква}
if (st[i]=а) then colA:=colA+1;{если считываемая буква-а то увеличиваем счётчик букв а в слове}
if (st[i]= ) or (st[i]=.) or (st[i]=!) or (st[i]=) then
begin{если дошли до конца слова то...}
if (maxAlt;colA) then begin maxA:=colA; stMax:=stMax1 end;{если количество а в слове больше макс. кол-ва а в одном из слов, то максимальное кол-во приравниваем к кол-ву, строку приравниваем к этому слову(stMax:=stMax1)}
stMax1:=; {обнуляем слово}
colA:=0; {обнуляем счётчик а}
end;
end;
writeln(stMax);
write(maxA); end.
L,i,maxA,colA:integer;
begin
readln(st);{считываем строку}
L:=length(st);{получаем длину строки}
colA:=0;{количество букв а в слове}
maxA:=0;{максимальное количество букв а в слове}
stMax1:=;{то, куда мы будем записывать слово}
for i:=1 to L do begin {проходим по строке L раз}
if ((st[i]lt;gt; ) and (st[i]lt;gt;.) and (st[i]lt;gt;!) and (st[i]lt;gt;)) then {если символ не пробел, не точка, не воскл. знак и не вопрос. знак то записываем в строку одну букву}
stMax1:=stMax1+st[i];{буква+буква+буква}
if (st[i]=а) then colA:=colA+1;{если считываемая буква-а то увеличиваем счётчик букв а в слове}
if (st[i]= ) or (st[i]=.) or (st[i]=!) or (st[i]=) then
begin{если дошли до конца слова то...}
if (maxAlt;colA) then begin maxA:=colA; stMax:=stMax1 end;{если количество а в слове больше макс. кол-ва а в одном из слов, то максимальное кол-во приравниваем к кол-ву, строку приравниваем к этому слову(stMax:=stMax1)}
stMax1:=; {обнуляем слово}
colA:=0; {обнуляем счётчик а}
end;
end;
writeln(stMax);
write(maxA); end.
Var s,s1,s2,smax:string;
max,k,p,i:integer;
begin
writeln(Введите предложение:);
readln(s);
s1:=s; s1[length(s1)]:= ;
max:=0;
smax:=;
while s1lt;gt; do
begin
p:=pos( ,s1);
s2:=copy(s1,1,p-1);
k:=0;
for i:=1 to p-1 do
if s2[i]=а then k:=k+1;
if kgt;max
then begin max:=k; smax:=s2; end
else if k=max then smax:=smax+,+s2;
delete(s1,1,p);
end;
writeln(smax);
writeln(k = ,max);
end.
Пример:
Введите предложение:
Макаронина и балаган а также команда каска и палатка.
Макаронина,балаган,палатка
k = 3
max,k,p,i:integer;
begin
writeln(Введите предложение:);
readln(s);
s1:=s; s1[length(s1)]:= ;
max:=0;
smax:=;
while s1lt;gt; do
begin
p:=pos( ,s1);
s2:=copy(s1,1,p-1);
k:=0;
for i:=1 to p-1 do
if s2[i]=а then k:=k+1;
if kgt;max
then begin max:=k; smax:=s2; end
else if k=max then smax:=smax+,+s2;
delete(s1,1,p);
end;
writeln(smax);
writeln(k = ,max);
end.
Пример:
Введите предложение:
Макаронина и балаган а также команда каска и палатка.
Макаронина,балаган,палатка
k = 3
77
Смежные вопросы: