Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на мн-ва

Автор: Caries 20.03.2005 20:38

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

Бред какой-то ,а не задача. (

Автор: volvo 20.03.2005 21:53

На самом деле бред, но если заменить кириллицу на латинские символы (чтобы можно было проверить результат) это будет выглядеть примерно так:

Код
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 20.03.2005 22:15

Если еще не затруднит, напишите что пограмма должна делать, а тоя че то не догнал ваще. группы какие Гр )))

Автор: volvo 20.03.2005 22:32

Ну я попытался сделать по условию...
_group[i] задает список людей, бывших в гостях у человека с именем i, то есть это и есть ГР.

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

Короче, все по условию...

Автор: Caries 20.03.2005 23:07

Спасибо большое.
прошу прощения конечно . но я не понял что должен вводить пользователь?

Автор: Caries 2.04.2005 23:06

Если можно более подробно алгоритм работы программы, интересует конкретно по какому принципу тут задан константый массив, и надо ли вообще ввводить кто у кого в гостях был?

Автор: volvo 2.04.2005 23:29

Цитата(Caries @ 2.04.05 18:06)
Если можно более подробно алгоритм работы программы

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

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

blink.gif А что, по-Вашему, описывается в
Код
const
_group: group = ...;

Автор: Caries 3.04.2005 1:01

:p10:

Автор: Гость 13.06.2007 21:03

Если не сложно объясните что тут почём или дайте почитать чёнить а то я не понимаю вообще о чём тут речь идёт.. мне надо такую же прогу только чтобы чел-к с клавиатуры забивал кто у кого в гостях был... глупая задача(