Задать вопрос
20 августа, 07:50

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

+5
Ответы (2)
  1. 20 августа, 08:15
    0
    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 раз:

    еду

    дин

    страшно
  2. 20 августа, 09:37
    0
    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.
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Дана строка в которой содержится осмысленной текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. Вывести ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы
Похожие вопросы по информатике
Дана строка S, состоящая из слов, разделённых пробелами. Выведите все слова, которые встречаются в S ровно один раз. Формат входных данных Во входном файле дана строка S.
Ответы (1)
Дана строка, состоящая из слов, разделённых пробелами. Выведите все слова, которые встречаются в ровно один раз. Формат входных данных Во входном файле дана строка.
Ответы (1)
1) дана строка S определить и напечатать сколько символов * 2) дана строка S вместо каждого символа * записать символы 0 Напечатать полученную строку 3) дана строка S получить и напечатать строку Т образуемую путем прочтения строки S начиная с ее
Ответы (1)
Дана матрица размера M х N. Вывести ее элементы в следующем порядке: первая строка слева направо, вторая строка справа налево, третья строка слева направо, четвертая строка справа налево и т. д. в c++, code blocks
Ответы (1)
Синвейн про информатику (1 строка информатика 2 строка два прилагательных 3 строка три глагола 4 строка фраза, несущая определённый смысл 5 строка вывод в одном слове) Стоки не должны рифмоваться
Ответы (1)