Уважаемые программисты! Подскажите с задачей пожалуйста!
Сначала задаём множество, например ( 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
Как сделать?