Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: МАТРИЦА БИНАРНЫХ ОТНОШЕНИЙ  (Прочитано 6489 раз)
0 Пользователей и 1 Гость смотрят эту тему.
m9c1k
Гость
« : 10-07-2009 10:43 » 

Уважаемые программисты! Подскажите с задачей пожалуйста!
Сначала задаём множество, например ( A B C D ).
Далее задаём пары отношений, к примеру (A-A, A-B, B-B, C-C, D-D).
Теперь составляем МАТРИЦУ БИНАРНЫХ ОТНОШЕНИЙ:

A B C D
A 1 0 0 0
B 1 1 0 0
C 0 0 1 0
D 0 0 0 1
Помогите написать процедуры для свойств.
Проверяем свойства - если на главной диагонали все 1, то рефлексивна.
Если она симметрична относительно главной диагонали ( если есть отношение A-B и B-A, C-D и D-C и т.д.) - то симметрична,а антисимметричность, транзитивность - не знаю.
Вот ,что cделал ->
Код:
Код:

Program otnoweniya;
  uses crt;
 Type
  Simvol = set of 'a'..'z';
  vector=array[1..20,1..20] of char;
 Var
  mas:vector;
  A:simvol;
  k,n,i,j,r:integer;
  x,key:char;
  procedure vvod(name_set:string; var num_elem:integer; var one_set:simvol);
  var x:char;
  begin
          writeln('vvedite ',num_elem,' element mnojestva ',name_set);
          readln(x);
          if (x in one_set)
          then begin
                writeln(x,' uje soderjitsya v mnojestve',name_set);
          end
          else begin
                writeln(x,' pomeschon v mnojestvo',name_set);
                one_set:=one_set+[x];
                num_elem:=num_elem+1;
                 end;
                 end;
   procedure vyvod(name_set:string;var one_set:simvol);
   var x:char;
   begin

                  writeln('     mnojestvo A: ');
                  writeln;
                for x:='A' to 'z' do if x in A then write(x,' ');



   end;
   procedure vvodpary(var mass:vector);

   begin
    clrscr;
    write(' koli4estvo par ');

    for i:=1 to r do  begin
     for j:=1 to r do begin
      write('A[',i,',',j,'] =');
      writeln;
     end;
     end;
     end;
     procedure vyvodpary( mass:vector);
     begin
      for i:=1 to r do
       begin
        for j:=1 to r do
         write(mass[i, j]:4);
         writeln;
         end;
         end;


   begin
   writeln(' vvedite koli4estvo elementov ');
   readln(n);

                A:=[];
                k:=1;
                repeat
                 vvod('A',k,A);
                until k>n;
                 k:=1;
                 vyvod('A',A);
                 readln;
                 writeln('vvedite razmernosty matricy');
                 readln(r,r);
                 vvodpary(mas);
                 vyvodpary(mas);
                 readln;

                           repeat
                           writeln('=======================');
                           writeln('  1:   refleksivnosty');
                           writeln('  2:   simmetri4nosty');
                           writeln('  3:   antisimmetri4nosty');
                           writeln('  4:   tranzitivnosty');
                           writeln('esk:   vyhod');
                           writeln('=======================');
                           writeln('->');

                           repeat until keyPressed;
                               key:=readkey;
                               writeln('key= ',key);

                         {  case key of
                           '1':begin  refleksivnosty();     vyvod();end;
                           '2':begin simmetr();              vyvod();end;
                           '3':begin antisimmetr();         vyvod();end;
                           '4':begin tranzityvnosty();     vyvod();end;

                           end; }
                               if key <> #27 then readln;
                                 until key=#27;
     end.

У меня еще вопрос. Я ввожу множество A -> W E R T ,выводит у меня тоже W E R T
а мне надо А^2
 wert
w0000
e0000
r0000
t0000
Как сделать?

* здесь.doc (31 Кб - загружено 1540 раз.)
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 10-07-2009 10:53 » new

Антисимметрия определяется точно так же, как симметрия, только вместо логического "и" должно быть логическое "исключающее или" (XOR).
Транзитивность определяется как "если (X->Y И Y->Z) - истина, то (X->Z) - тоже истина". По определению, в общем.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines