Дана строка в которой содержится осмысленной текстовое сообщение. слова сообщения разделяются пробелами и знаками препинания. вывести только те слова, которые встречаются более n раз.
199
213
Ответы на вопрос:
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.
Даны числа 426, 62, 84, 4, 2, 8, 24рассмотрим число 426. так как мы составляем палиндром, при этом количество чисел в палиндроме чётное, то в нем должна быть обратная запись этого числа - 624. её мы можем получить из чисел 62 и 4.имеем: зеркальные числа 426 и 624 остались числа 84, 2, 8, 24. из них мы можем составить два зеркальных числа - 842 и 248. осталось составить палиндром. так как надо создать максимально возможный палиндром, то число 842 должно быть вначале, а после - число 624. ответ: 842624426248
Популярно: Информатика
-
kanyamax15.03.2020 18:29
-
scorp200304.12.2021 14:58
-
Uprava7819.03.2021 11:40
-
фелекс5414.06.2020 20:09
-
Gggmim28.04.2021 06:44
-
kushkulina201129.12.2022 06:48
-
blablabla11413.08.2020 18:31
-
angelvkedah908.12.2022 05:33
-
PASHA993r06.09.2022 09:11
-
OTJTu4HuK26.12.2020 04:00