Дана строка в которой содержится осмысленной текстовое сообщение. слова сообщения разделяются пробелами и знаками препинания. вывести только те слова, которые встречаются более n раз.
112
450
Ответы на вопрос:
Const n=50; { максимальное число различных слов в строке } del=[' ','.',',',': ','; ','-','! ','? ','/']; var mw: array[1..n] of string; { найденные слова } mk: array[1..n] of integer; { количество повторений слов } s,w: string; i,j,k,l,m: integer; skip,new_word: boolean; begin write('введите текст: '); readln(s); s: =s+' '; write('укажите предельное число повторений слова: '); read(k); l: =length(s); m: =0; skip: =(s[1] in del); if skip then w: ='' else w: =s[1]; for i: =2 to l do if s[i] in del then begin if not skip then begin { w содержит очередное найденное слово } j: =1; new_word: =true; while (j< =m) and new_word do begin if w=mw[j] then begin inc(mk[j]); new_word: =false end; inc(j) end; if new_word then begin inc(m); mw[m]: =w; mk[m]: =1 end; w: =''; skip: =true end end else if skip then begin w: =s[i]; skip: =false end else w: =w+s[i]; { фраза разобрана и проанализирована } j: =0; i: =1; while (i< =m) and (j=0) do begin if mk[i]> k then j: =i; inc(i) end; if j> 0 then begin writeln('слова, которые встретились больше, чем ',k,' раз: '); writeln(mw[j]); for i: =j+1 to m do if mk[i]> k then writeln(mw[i]); end else writeln('нет слов, которые встретились больше, чем ',k,' раз.') end. тестовое решение: введите текст: еду, еду в чистом поле; колокольчик дин-дин- страшно, страшно поневоле средь неведомых равнин! укажите предельное число повторений слова: 1 слова, которые встретились больше, чем 1 раз: еду дин страшно
const z = 30; // максимально число слов var s,w : string; n,p,i,j,l : integer; words : array [1..z] of string; kw : array [1..z] of integer; r : boolean; begin writeln ('введите строку'); readln (s); writeln ('укажите кол-во повторений'); readln (n); l : = length(s); p : = 1; w : = ''; for i : = 1 to l do if (s[i] < > ' ') and (s[i] < > '.') and (s[i] < > ',') then w : = w + s[i] else begin for j : = 1 to p do if w = words[j] then begin kw[j] : = kw[j] +1; r : = true; end; if not r then begin p : = p +1; words[p] : = w; kw[p] : = kw[p] +1; end; w : = ''; r : = false; end; for i : = 1 to p do if kw[i] > n then writeln (words[i]); end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
kristinasotsen15.04.2022 05:57
-
Nastya2606122.01.2021 16:53
-
ЛизаЕ28.05.2020 00:28
-
оуовлвдсл29.06.2022 14:27
-
трум129.08.2021 18:38
-
klimenkol2128.04.2020 03:21
-
BEKISKAKOV7527.01.2021 23:59
-
Fatima8215.08.2022 14:41
-
drr230.11.2021 22:29
-
denissss222212.07.2021 00:02
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.