Задать вопрос
12 января, 07:06

Pascal. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово в алфавитном порядке все.

+3
Ответы (1)
  1. 12 января, 08:37
    0
    Вариант для тех, кто любит и понимает множества.

    const

    cs='бвгджз';

    var

    s:string;

    i:integer;

    c:char;

    p, csg:set of char;

    begin

    Writeln ('Введите текст, разделяя слова запятыми, в конце поставьте точку') ;

    Readln (s) ;

    p:=[];

    for i:=1 to Length (cs) do Include (csg, cs[i]) ; { инициализация множества }

    s:=LowerCase (s) ; { приведение к нижнему регистру }

    i:=1; c:=s[1];

    while c'.' do begin

    { обработка нечетного слова }

    while not (c in [',','.']) do begin

    if (c in csg) and not (c in p) then Include (p, c) ;

    i:=i+1;

    c:=s[i]

    end;

    { обработка четного слова }

    if c'.' then begin i:=i+1; c:=s[i] end;

    while not (c in [',','.']) do begin

    if (c in csg) and (c in p) then Exclude (p, c) ;

    i:=i+1;

    c:=s[i]

    end;

    if c'.' then begin i:=i+1; c:=s[i] end

    end;

    s:='';

    for i:=1 to Length (cs) do if cs[i] in p then Write (cs[i])

    end.

    Тестовое решение:

    Введите текст, разделяя слова запятыми, в конце поставьте точку

    Это, пример, текста, созданного, для, проверки, программы.

    гд

    Вариант для тех, кто с множествами не дружит:

    const

    cs='бвгджз';

    var

    s, p:string;

    i, n:integer;

    c:char;

    begin

    Writeln ('Введите текст, разделяя слова запятыми, в конце поставьте точку') ;

    Readln (s) ;

    p:=''; n:=Length (cs) ;

    s:=LowerCase (s) ; { приведение к нижнему регистру }

    i:=1; c:=s[1];

    while c'.' do begin

    { обработка нечетного слова }

    while (c',') and (c'.') do begin

    if (Pos (c, cs) >0) and (Pos (c, p) = 0) then p:=p+c;

    i:=i+1;

    c:=s[i]

    end;

    { обработка четного слова }

    if c'.' then begin i:=i+1; c:=s[i] end;

    while (c',') and (c'.') do begin

    if (Pos (c, cs) >0) and (Pos (c, p) = 1) then p[Pos (c, p) ]:='*';

    i:=i+1;

    c:=s[i]

    end;

    if c'.' then begin i:=i+1; c:=s[i] end

    end;

    for i:=1 to Length (cs) do if Pos (cs[i], p) >0 then Write (cs[i])

    end.

    Тестовое решение:

    Введите текст, разделяя слова запятыми, в конце поставьте точку

    Данная, фраза, предлагается, для, тестирования.

    вг
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Pascal. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы