Ребята, помогите пожалуйста решить задачу ** Pascal ABC (с подробным объяснением каждого...

0 голосов
43 просмотров

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


Информатика (90 баллов) | 43 просмотров
0

а строка у нас откуда берется? с txt,или во время исполнения программы надо текст вводить?

0

Во время исполнения программы

0

строка на русском вводится?

0

а если количество букв а в двух словах равно?

0

Строка вводится на русском языке, если кол-во букв "а" в двух словах равно, то рассмотреть этот случай в программе (наверное, вывод двух слов сразу)

0

Лан,пускай тебе он поможет, я другим пойду помогать,помочь надо каждому)

0

Что-то все замолчали, если будет время Zhenyalazorenk, напиши и ты, пожалуйста, свой вариант программы, пожалуйста

0

Помогите решить, кто-нибудь...

0

я же уже решил

Дано ответов: 2
0 голосов
Правильный ответ

Var s,s1,s2,smax:string;
max,k,p,i:integer;
begin
writeln('Введите предложение:');
readln(s);
s1:=s; s1[length(s1)]:=' ';
max:=0;
smax:='';
while s1<>'' 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 k>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

(194k баллов)
0 голосов

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]<>' ') and (st[i]<>'.') and (st[i]<>'!') and (st[i]<>'?')) 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 (maxAесли количество 'а' в слове больше макс. кол-ва 'а' в одном из слов, то максимальное кол-во приравниваем к кол-ву, строку приравниваем к этому слову(stMax:=stMax1)}

    stMax1:='';  {обнуляем слово}
    colA:=0;  {обнуляем счётчик 'а'}
  end;
 end;
writeln(stMax);
write(maxA); end.

(8.6k баллов)
0

объясни, как мог, но что непонятно-спрашивай

0

объяснил*

0

Спасибо, все подробно объяснено. Но у меня такой вопрос - если будет два слова, где максимальное кол-во букв "а" в слове (допустим, "макаронина" и "балаган"), можешь подсказать, как дополнить программу, пожалуйста

0

я как ращз думал над этим

0

if (maxA=colA) then stMax:=stMax+' '+stMax1; эту строку надо вставить перед этой if (maxA<colA) then begin maxA:=colA; stMax:=stMax1 end;