Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 20:07   #1
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию Работа со строками

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

Код:
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.
Допишите программу чтобы кто у кого в гостях был вручную вводилось(ну тоисть чтобы вводились групы которые вместе гуляли, можно так сказать) , константу убрать нужно.
vadiprog вне форума Ответить с цитированием
Старый 05.12.2011, 20:39   #2
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию

Код:
type
  name = (vasya, volodya, ira, lida, marina, misha);
  guests = set of name;
  group = array[name] of guests;


 var a,b,c,d,e,f:group;
function vezde(gr: group): boolean;
  var
    i, j: name;
    res: boolean;
    was: set of name;
  begin
    res := false;
        for i := low(name) to high(name) do
      begin
              was := [];
        for j := low(name) to high(name) do
                   if (i in gr[j]) then was := was + [j];

                res := res or ((was + [i]) = [low(name) .. high(name)])
      end;
        vezde := res
  end;
begin
  writeln('imena - vasya, volodya, ira, lida, marina, misha');
  writeln('Gosti ludini z imenem');
  write('vasya');
  readln(a);
  write('volodya');
  readln(b);
  write('ira');
  readln(c);
  write('lida');
  readln(d);
  write('marina');
  readln(e);
  write('misha');
  readln(d);
  writeln(vezde(a,b,c,d,e,f))
end.
что не так?
vadiprog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками Freek123 C# (си шарп) 1 21.10.2011 11:09
C# Работа со строками Rikhard Общие вопросы C/C++ 1 08.12.2010 22:29
Работа со строками Программер Михаил Общие вопросы C/C++ 4 07.12.2010 20:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
[С++]работа со строками Федор Помощь студентам 6 23.12.2007 12:35