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

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Распечатать буквы, которые встречаются в каждом слове текста только один раз.

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

Chowder » 28 мар 2014, 21:04

Помогите доделать программу
Пусть дан текст. Распечатайте те буквы, которые встречаются в каждом слове текста только один раз.

Код: Выделить всё

var 
 i: integer;
 s,st: string;
 ws: set of Char;
begin
writeln('Введите текст');
 begin
   Readln(s);
    st:='';
     for i:=1 to Length(s) do
   begin
    if not(s[i] in ws) and (s[i]<>' ') then
    begin
    if s[i]<>' ' then ws:=ws+[s[i]];
     st:=st+s[i];
    end 
    else
     begin
       Write(st);
         st:='';
       end;
    end;
   Writeln;
 end;
      Readln;
end.

Re: Распечатать буквы, которые встречаются в каждом слове текста только один раз.

Хыиуду » 26 мар 2014, 14:41

Я бы сделал так: создал одно "мастер-множество", содержащее в себе все буквы алфавита, и одно пустое множество - на очередное слово. Прочитываем слово, идем по буквам. Если очередная буква отсутствует в множестве - записываем ее в множество, если присутствует - буква встречается в одном слове более одного раза, так что удаляем ее из мастер-множества.
Непонятно, что делать с буквами, которые в словах вообще отсутствуют.

Re: Распечатать буквы, которые встречаются в каждом слове текста только один раз.

Chowder » 25 мар 2014, 21:20

Эта задачка по теме "множества" мне получается вот это надо сделать?(использовать 2 одинаковых набора множеств и тд.)

Re: Распечатать буквы, которые встречаются в каждом слове текста только один раз.

Naeel Maqsudov » 25 мар 2014, 20:44

Понятно же в общем, что надо сканировать строку от начала до конца и подсчитывать, сколько раз какая встретилась буква.
Причём счётчиков должно быть СколькоБукв × СколькоСлов.
Потом надо просканировать все эти счётчики, и взять только те, которые насчитали ровно 1, ну и вывести буквы, соответствующие этим счётчикам.
Т.е. два цикла: сначаа по буквам, потом по счётчикам.

А вот дальнейшие детали зависят от того, по какой теме была эта задача.
Может счётчики хранить в массивах? Может использовать 2 одинаковых набора множеств (полагая что в первом флаг выставляется когда буква встретилась в первый раз, а во втором — когда последующие, а потом сделать AND этих множеств и останется ответ)? Может быть (так как количество слов заранее неизвестно) надо применять динамическое выделение памяти? А может быть нужно обнаруженные буквы заносить в динамические списки? А может быть в строки (наподобие предложенного выше примера с множествами)?

Это только то что приходит на ум в первую же минуту.
У этой задачи десятки вариантов решений!
А преподаватель наверняка имел в виду одно-два, которые он сочтёт правильными ;)
Скажет: "да, результат верный, но где множества, дружок?"

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

Chowder » 25 мар 2014, 19:07

Помогите пожалуйста хотя бы с алгоритмом.
Пусть дан текст. Распечатайте те буквы, которые встречаются в каждом слове текста только один раз.

Вернуться к началу