Матрица в паскале
Помогите пожалуйста решить задачу на паскале. Написать программу. Граф задан матрицей инцеденции. Определить является ли он антисимметричным или полным антисимметричным. Достроить до полного антисимметричного графа если он таковым не является. 6<n<10. Я просто в тупике насколько понял работа должны производится только с матрицей инциденции и на выходе должна быть она же Помогите плиз.
Если кому интересно решение будет выглядеть вот так: Функции конвертирования матриц из Инциденции в Смежности и из смежности в Инциденции в программу включены.
[DELPHI]program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
MaxUp=4;
MaxRg=4;
var
G: array[1.. MaxUp, 1..MaxRg] of integer;
GT: array[1.. MaxUp, 1..MaxUp] of integer;
GN: array[1.. MaxUp, 1..6] of integer;
i, z, x, temp, st, sr, trg: integer;
begin
G[1,1]:=1;
G[1,2]:=0;
G[1,3]:=1;
G[1,4]:=0;
G[2,1]:=0;
G[2,2]:=1;
G[2,3]:=1;
G[2,4]:=0;
G[3,1]:=0;
G[3,2]:=1;
G[3,3]:=0;
G[3,4]:=1;
G[4,1]:=1;
G[4,2]:=0;
G[4,3]:=0;
G[4,4]:=1;
{------SEEK THIS--------------}
Write('Start matrix:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxRg do
begin
Write(G[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Convert Matrix to SMJ---------------------------------------------------}
for i:=1 to MaxUp do
begin
for z:=1 to MaxRg do
begin
st:=0;
if (G[i,z]=1) and (st<>1) then
begin
for x:=i+1 to MaxUp do
if G[x,z]=1 then
begin
GT[i,x]:=1;
GT[x,i]:=1;
end;
st:=1;
end;
end;
end;
{------END Convert Matrix to SMJ-----------------------------------------------}
{------SEEK THIS--------------}
WriteLn('');
WriteLn('');
Write('Matrca smejnisti:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxUp do
begin
Write(GT[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Chek And rebuild--------------------------------------------------------}
for i:=1 to maxUp do
for z:=1 to maxUp do
temp:=temp+GT[i,z];
WriteLn('');
WritelN('Summ of points: ', temp);
trg:=trunc(((maxUp*maxUp)-maxUp)/2);
if (temp>trg) or (temp<trg) then
WriteLn('NOT SUMMETIC!!! Rebuilding.');
for i:=1 to MaxUp do
for z:=1 to MaxUp do
begin
if (GT[i,z]=1) and (GT[z,i]=1) and (i<>z) then
GT[z,i]:=0;
if (GT[i,z]=0) and (GT[z,i]=0) and (i<>z) then
GT[i,z]:=1;
if (GT[i,z]=0) and (GT[z,i]=1) and (i<>z) then
if (GT[i,z]=1) and (GT[z,i]=0) and (i<>z) then
end;
{------END Chek And rebuild----------------------------------------------------}
{------SEEK THIS--------------}
WriteLn('');
Write('Rebuilding Matrca Smejnisti:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxUp do
begin
Write(GT[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Convert Matix to INC----------------------------------------------------}
sr:=1;
for i:=1 to MaxUp do
for z:=1 to MaxUp do
begin
if GT[i,z]=1 then
begin
GN[z,sr]:=1;
GN[i,sr]:=1;
sr:=sr+1;
end;
end;
{------END Convert Matix to INC------------------------------------------------}
{------SEEK THIS--------------}
Write('NEW matrix:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to 6 do
begin
Write(GN[i,z]);
end;
end;
{------END SEEK THIS----------}
ReadLn;
end.
[/DELPHI]
[DELPHI]program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
MaxUp=4;
MaxRg=4;
var
G: array[1.. MaxUp, 1..MaxRg] of integer;
GT: array[1.. MaxUp, 1..MaxUp] of integer;
GN: array[1.. MaxUp, 1..6] of integer;
i, z, x, temp, st, sr, trg: integer;
begin
G[1,1]:=1;
G[1,2]:=0;
G[1,3]:=1;
G[1,4]:=0;
G[2,1]:=0;
G[2,2]:=1;
G[2,3]:=1;
G[2,4]:=0;
G[3,1]:=0;
G[3,2]:=1;
G[3,3]:=0;
G[3,4]:=1;
G[4,1]:=1;
G[4,2]:=0;
G[4,3]:=0;
G[4,4]:=1;
{------SEEK THIS--------------}
Write('Start matrix:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxRg do
begin
Write(G[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Convert Matrix to SMJ---------------------------------------------------}
for i:=1 to MaxUp do
begin
for z:=1 to MaxRg do
begin
st:=0;
if (G[i,z]=1) and (st<>1) then
begin
for x:=i+1 to MaxUp do
if G[x,z]=1 then
begin
GT[i,x]:=1;
GT[x,i]:=1;
end;
st:=1;
end;
end;
end;
{------END Convert Matrix to SMJ-----------------------------------------------}
{------SEEK THIS--------------}
WriteLn('');
WriteLn('');
Write('Matrca smejnisti:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxUp do
begin
Write(GT[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Chek And rebuild--------------------------------------------------------}
for i:=1 to maxUp do
for z:=1 to maxUp do
temp:=temp+GT[i,z];
WriteLn('');
WritelN('Summ of points: ', temp);
trg:=trunc(((maxUp*maxUp)-maxUp)/2);
if (temp>trg) or (temp<trg) then
WriteLn('NOT SUMMETIC!!! Rebuilding.');
for i:=1 to MaxUp do
for z:=1 to MaxUp do
begin
if (GT[i,z]=1) and (GT[z,i]=1) and (i<>z) then
GT[z,i]:=0;
if (GT[i,z]=0) and (GT[z,i]=0) and (i<>z) then
GT[i,z]:=1;
if (GT[i,z]=0) and (GT[z,i]=1) and (i<>z) then
if (GT[i,z]=1) and (GT[z,i]=0) and (i<>z) then
end;
{------END Chek And rebuild----------------------------------------------------}
{------SEEK THIS--------------}
WriteLn('');
Write('Rebuilding Matrca Smejnisti:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to MaxUp do
begin
Write(GT[i,z]);
end;
end;
{------END SEEK THIS----------}
{------Convert Matix to INC----------------------------------------------------}
sr:=1;
for i:=1 to MaxUp do
for z:=1 to MaxUp do
begin
if GT[i,z]=1 then
begin
GN[z,sr]:=1;
GN[i,sr]:=1;
sr:=sr+1;
end;
end;
{------END Convert Matix to INC------------------------------------------------}
{------SEEK THIS--------------}
Write('NEW matrix:');
for i:=1 to MaxUp do
begin
WriteLn('');
for z:=1 to 6 do
begin
Write(GN[i,z]);
end;
end;
{------END SEEK THIS----------}
ReadLn;
end.
[/DELPHI]