Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на мн-ва
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Caries
type=(Вася,Володя,Ира,Лида,Марина,Миша)
гости=set of имя
группа=array[имя] of гости;
Описать логическую функцию Везде(ГР) определяющую, есть в группе Гр хотя бы один человек, побывавшийв гостях у всех остальных из Группы(ГР[х]) мн-во людей побывавших в гостях у человека с именем x; xне принадлежитГР[х];

Бред какой-то ,а не задача. (
volvo
На самом деле бред, но если заменить кириллицу на латинские символы (чтобы можно было проверить результат) это будет выглядеть примерно так:
Код
type
 name = (vasya, volodya, ira, lida, marina, misha);
 guests = set of name;
 group = array[name] of guests;

const
 _group: group =
   ([volodya, misha],
    { Володя и Миша были в гостях у Васи (№1 в списке имен) }

    [vasya, lida, ira, misha], { и т.д. }
    [misha, vasya, marina],
    [misha, vasya, ira],
    [volodya{misha}],
    [vasya, ira]);

function vezde(gr: group): boolean;
 var
   i, j: name;
   res: boolean;
   was: set of name;
 begin
   res := false;
   { Перебор всех студентов группы (I - очередной студент) }
   for i := low(name) to high(name) do
     begin
       { was будет содержать всех, у кого в гостях был I }
       was := [];
       for j := low(name) to high(name) do
         { Если I был в гостях у J, то добавить его к списку }
         if (i in gr[j]) then was := was + [j];

       { если список тех, у кого в гостях побывал I
          (вместе с самим I) содержит всех учащихся
          группы, это значит, что I побывал в гостях у всех остальных.
          Только в этом случае Res будет равно True }
       res := res or ((was + [i]) = [low(name) .. high(name)])
     end;
   { возвращаем результат }
   vezde := res
 end;

begin
 writeln(vezde(_group))
end.
Caries
Если еще не затруднит, напишите что пограмма должна делать, а тоя че то не догнал ваще. группы какие Гр )))
volvo
Ну я попытался сделать по условию...
_group[i] задает список людей, бывших в гостях у человека с именем i, то есть это и есть ГР.

Функция function vezde(gr: group): boolean; это то, что требуется - функция, возвращающая True если есть человек, побывавший у ВСЕХ остальных в гостях, и False если такого человека нет... Это та самая Везде(ГР)

Короче, все по условию...
Caries
Спасибо большое.
прошу прощения конечно . но я не понял что должен вводить пользователь?
Caries
Если можно более подробно алгоритм работы программы, интересует конкретно по какому принципу тут задан константый массив, и надо ли вообще ввводить кто у кого в гостях был?
volvo
Цитата(Caries @ 2.04.05 18:06)
Если можно более подробно алгоритм работы программы

К программе добавлены комментарии...

Цитата(Caries @ 2.04.05 18:06)
надо ли вообще вводить кто у кого в гостях был?

blink.gif А что, по-Вашему, описывается в
Код
const
_group: group = ...;
Caries
:p10:
Гость
Если не сложно объясните что тут почём или дайте почитать чёнить а то я не понимаю вообще о чём тут речь идёт.. мне надо такую же прогу только чтобы чел-к с клавиатуры забивал кто у кого в гостях был... глупая задача(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.