Есть ответ 👍

Дана строка в которой содержится осмысленной текстовое сообщение. слова сообщения разделяются пробелами и знаками препинания. вывести только те слова, которые встречаются более n раз.

199
213
Посмотреть ответы 3

Ответы на вопрос:


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

Популярно: Информатика