Vous êtes sur la page 1sur 14

Laboratorul 4.

Identificarea unităţilor la stînga, la dreapta şi


unităţilor multiple

Fie (Q,●)-grupoid. Vom spune ca e este (n,m) unitate, daca se indeplinesc urmatoarele conditii:

1. e∗e=e
2. n ( e , x ) x=x , pentruorice x ∈(G, ∙)
3. ( x ,e ) m=x , pentru orice x ∈(G ,∙)

program unitate_multipla;
uses crt;
label y;
type masiv=array[1..20,1..20] of byte;
var i,j,r,r1,r2,d,d1,m,t,p,i2,k,k1,n,l:byte;
{t:boolean;}
a:masiv;
c,b:array[1..20] of 0..20;

function mm(g:byte):byte;
var ii,jj,k,x,q:byte;
begin
for jj:=1 to n do begin
k:=0;
x:=jj;
repeat begin
x:=a[x,g];
inc(k);
end;
until(x=jj)or(k>n);
if k>n then b[jj]:=0 else b[jj]:=k;
end;
q:=b[1];
for jj:=1 to n do
if b[jj]>q then q:=b[jj];
mm:=q;
end;

function nn(gg:byte):byte;
var ii,jj,k,x,q:byte;
begin
for jj:=1 to n do begin
k:=0;
x:=jj;
repeat begin
x:=a[gg,x];
inc(k);
end;
until(x=jj)or(k>n+1);
if k>n then c[jj]:=0 else c[jj]:=k;
end;
q:=c[1];
for jj:=1 to n do
if c[jj]>q then q:=c[jj];
nn:=q;
end;

Procedure unitate_dreapta(gr:masiv);
var l,i,k: integer;
begin
j:=0; r:=0;
for i:=1 to n do begin
l:=0; inc(j);
if gr[j,i]=i then begin
for k:=1 to n do begin
if gr[k,j]=k then inc(l);
if l=n then r:=j;
end; end; end;
if r<>0 then writeln('Este unitate de dreapta ',r)
else writeln('Nu este unitatea de dreapta');
end;
Procedure unitate_stanga(gr:masiv);
var l,i,k: integer;
begin
j:=0; r2:=0;
for i:=1 to n do begin
l:=0; inc(j);
if gr[i,j]=i then begin
for k:=1 to n do begin
if gr[j,k]=k then inc(l);
if l=n then r2:=j;
end; end; end;
if r2<>0 then writeln('Este unitate de stanga ',r2)
else writeln('Nu este unitatea de stanga');
end;
Procedure unitatea;
begin
if (r=r2) and (r>0) then writeln('este unitate ',r) else
writeln('nu este unitate',r);
end;
Procedure asociativ(gr:masiv);
var l,i,k,j:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[j,k];
d1:=gr[i,j];
if gr[i,d]<>gr[d1,k] then inc(l);
end;
if l=0 then writeln('este asociativ') else
writeln('nu este asociativ');
end;
Procedure medial(gr:masiv);
var l,i,j,k,t:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
for t:=1 to n do
begin
d:=gr[i,j];
r:=gr[k,t];
d1:=gr[i,k];
r1:=gr[j,t];
if gr[d,r]<>gr[d1,r1] then inc(l);
end;
if l=0 then writeln('este medial') else
writeln('nu este medial');
end;
Procedure paramedial(gr:masiv);
var l,i,j,k,t:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
for t:=1 to n do
begin
d:=gr[i,j];
r:=gr[k,t];
d1:=gr[t,j];
r1:=gr[k,i];
if gr[d,r]<>gr[d1,r1] then inc(l);
end;
if l=0 then writeln('este paramedial') else
writeln('nu este paramedial');
end;
Procedure bicomutativ(gr:masiv);
var l,i,j,k,t:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
for t:=1 to n do
begin
d:=gr[i,j];
r:=gr[k,t];
d1:=gr[t,k];
r1:=gr[j,i];
if gr[d,r]<>gr[d1,r1] then inc(l);
end;
if l=0 then writeln('este bicomutativ') else
writeln('nu este bicomutativ');
end;
Procedure ag_gr(gr:masiv);
var l,i,j,k:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];
d1:=gr[k,j];
if gr[d,k]<>gr[d1,i] then inc(l);
end;
if l=0 then writeln('este AG grupoid') else
writeln('nu este AG grupoid');
end;
Procedure ga_gr(gr:masiv);
var l,i,j,k:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];
d1:=gr[j,i];
if gr[d,k]<>gr[k,d1] then inc(l);
end;
if l=0 then writeln('este GA grupoid') else
writeln('nu este GA grupoid');
end;

{Procedure ga_gr1(gr:masiv);
var l:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];
d1:=gr[k,i];
if gr[d,k]<>gr[d1,j] then inc(l);
end;
if l=0 then writeln('este GA grupoid') else
writeln('nu este GA grupoid');
end;}

Procedure ad_gr(gr:masiv);
var l,i,j,k:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];

if gr[d,k]<>gr[k,d] then inc(l);


end;
if l=0 then writeln('este AD grupoid') else
writeln('nu este AD grupoid');
end;
Procedure da_gr(gr:masiv);
var l,i,j,k:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[j,k];
r:=gr[j,i];
if gr[i,d]<>gr[k,r] then inc(l);
end;
if l=0 then writeln('este DA grupoid') else
writeln('nu este DA grupoid');
end;
Procedure hexagonal(gr:masiv);
var l,i,j,k,t:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
for t:=1 to n do
begin
d:=gr[i,j];
r:=gr[k,t];
d1:=gr[i,k];
r1:=gr[j,t];

if (gr[d,r]<>gr[d1,r1]) or (gr[i,i] <> i) then inc(l);


end;

if l=0 then writeln('este hexagonal') else


writeln('nu este hexagonal');
end;
Procedure dist_dr(gr:masiv);
var l,i,k,j:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];
d1:=gr[i,k];
r1:=gr[j,k];
if gr[d,k]<>gr[d1,r1] then inc(l);
end;
if l=0 then writeln('este distributiv la dreapta') else
writeln('nu este distributiv la dreapta');
end;
Procedure dist_st(gr:masiv);
var l,i,j,k:integer;
begin
l:=0;
for i:=1 to n do
for j:=1 to n do
for k:=1 to n do
begin
d:=gr[i,j];
d1:=gr[k,i];
r1:=gr[k,j];
if gr[k,d]<>gr[d1,r1] then inc(l);
end;
if l=0 then writeln('este distributiv la stinga') else
writeln('nu este distributiv la stinga');
end;

procedure tipar(h:masiv);
var contor,i,j:integer;
begin
contor:=0;
write('a,(*);');
for i:=1 to n do begin
contor:=contor+3;
gotoxy(2+3*i,3);
write('_');
gotoxy(4,i+3);
write('|');
gotoxy(3+contor,3);
write(i);
end;
for i:=1 to n do
for j:=1 to n do begin
gotoxy(3+3*j,3+i);
writeln(h[i,j]);
end;end;

Begin
y:clrscr;
write('dati n');
readln(n);
for i:=1 to n do begin
gotoxy(2+3*i,3);
write('_');
gotoxy(4,i+3);
write('|');
gotoxy(3+3*i,2);
write(i);
gotoxy(3,3+i);
write(i); end;
for i:=1 to n do
for j:=1 to n do
begin
gotoxy(3+3*j,3+i);
read(a[i,j]);
end;
for i:=1 to n do
for j:=1 to n do
for l:=1 to j-1 do
if a[i,j]=a[i,1] then goto y;
for i:=1 to n do
for j:=1 to n do
for l:=1 to j-1 do
if a[i,j]=a[i,1] then goto y;
clrscr;
tipar(a);
for i:=1 to n do
if ((a[i,i]=i) and (mm(i)<>0) and (nn(i)<>0)) then begin
writeln(i,'=E(',nn(i),',',mm(i),')');
end;
unitate_stanga(a);
unitate_dreapta(a);
asociativ(a);
medial(a);
paramedial(a);
bicomutativ(a);
ag_gr(a);
ga_gr(a);
ad_gr(a);
da_gr(a);
hexagonal(a);
dist_dr(a);
dist_st(a);
readkey;
end.
Rezultate:

1. dati n=3

_1 _2 _3

| 1 2 3

| 3 1 2

| 2 3 1

1=E(1,2)

Este unitate de stanga 1

Nu este unitatea de dreapta

nu este asociativ

este medial

este paramedial

este bicomutativ

este AG grupoid

nu este GA grupoid

nu este AD grupoid

nu este DA grupoid

nu este hexagonal

nu este distributiv la dreapta

nu este distributiv la stinga

2. dati n=4

_1 _2 _3 _4

| 1 2 4 3

| 3 4 2 1

| 4 1 3 2
| 2 3 1 4

1=E(2,3)

3=E(3,2)

4=E(3,3)

Nu este unitatea de stanga

Nu este unitatea de dreapta

nu este asociativ

nu este medial

nu este paramedial

nu este bicomutativ

nu este AG grupoid

nu este GA grupoid

nu este AD grupoid

nu este DA grupoid

nu este hexagonal

nu este distributiv la dreapta

nu este distributiv la stinga

3.Dati n=5

_1 _2 _3 _4 _5
| 1 5 4 3 2
| 3 2 1 5 4
| 5 4 3 2 1
| 2 1 5 4 3
| 4 3 2 1 5
1=E(2,4)
2=E(2,4)
3=E(2,4)
4=E(2,4)
5=E(2,4)
Nu este unitatea de stanga
Nu este unitatea de dreapta
nu este asociativ
este medial
nu este paramedial
nu este bicomutativ
este AG grupoid
nu este GA grupoid
nu este AD grupoid
nu este DA grupoid
este hexagonal
este distributiv la dreapta
este distributiv la stinga

4.Dati n=4

_1 _2 _3 _4

| 1 2 4 3

| 2 1 3 4

| 3 4 1 2

| 4 3 2 1

1=E(2,1)

Nu este unitatea de stanga

Este unitate de dreapta 1

nu este asociativ

este medial

este paramedial

este bicomutativ

nu este AG grupoid

nu este GA grupoid

nu este AD grupoid

este DA grupoid

nu este hexagonal

nu este distributiv la dreapta

nu este distributiv la stinga


5.Dati n=5

_1 _2 _3 _4 _5

| 1 3 2 5 4

| 3 4 1 2 5

| 2 1 5 4 3

| 5 2 4 3 1

| 4 5 3 1 2

1=E(2,2)

Nu este unitatea de stanga

Nu este unitatea de dreapta

nu este asociativ

este medial

este paramedial

este bicomutativ

nu este AG grupoid

este GA grupoid

este AD grupoid

nu este DA grupoid

nu este hexagonal

nu este distributiv la dreapta

nu este distributiv la stinga

6.dati n=5

_1 _2 _3 _4 _5

| 1 3 2 5 4

| 4 2 5 1 3
| 5 4 3 2 1

| 3 5 1 4 2

| 2 1 4 3 5

1=E(2,4)

2=E(2,4)

3=E(2,4)

4=E(2,4)

5=E(2,4)

Nu este unitatea de stanga

Nu este unitatea de dreapta

nu este asociativ

este medial

nu este paramedial

nu este bicomutativ

este AG grupoid

nu este GA grupoid

nu este AD grupoid

nu este DA grupoid

este hexagonal

este distributiv la dreapta

este distributiv la stinga

7.dati n=4

_1 _2 _3 _4

| 1 2 3 4

| 2 1 4 3

| 4 3 1 2

| 3 4 2 1
1=E(1,2)

Este unitate de stanga 1

Nu este unitatea de dreapta

nu este asociativ

este medial

este paramedial

este bicomutativ

este AG grupoid

nu este GA grupoid

nu este AD grupoid

nu este DA grupoid

nu este hexagonal

nu este distributiv la dreapta

nu este distributiv la stinga

Numarul matricei
№ 1 2 3 4 5 6 7
Unit.de Dr. - - - 1 - - -
Unit. de St. 1 - - - - - 1
Unitate - - - - - - -
1=E(1,2) 1=E(1,2) 1=E(2,4 1=E(2,1) 1=E(2,2 1=E(2,4) 1=E(1,2)
3=E(3,2) ) ) 2=E(2,4) )
4=E(3,3) 2=E(2,4 3=E(2,4)
) 4=E(2,4)
3=E(2,4 5=E(2,4)
Unit.Mult.
)
4=E(2,4
)
5=E(2,4
)
Asociativ - - - - - - -
Medial + - + + + + +
Paramedial + - - + + - +
Bicomutativ + - - + + - +
AG-grupoid + - + - - + +
GA-grupoid - - - - + - -
AD-grupoid - - - - + - -
DA-grupoid - - - + - - -
Hexagonal - - + - - + -
Distr. dr. - - + - - + -
Distr. st. - - + - - + -

Vous aimerez peut-être aussi