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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2012, 16:59   #1
vavira
Новичок
Джуниор
 
Регистрация: 14.04.2012
Сообщений: 1
По умолчанию Построение матрицы инцидентности по заданной матрице смежности

Доброго времени суток!
Прошу помочь найти ошибки в коде.
Вводится матрица смежности, проходит проверку на принадлежность к орграфу (неографу), вывод матрицы инцидентности.
Результат: при вводе матрицы неографа выдается матрица инцидентности и в ней правильная только первая строка, при вводе матрицы ографа выдается только один столбец.
Код:
Program Matrix;
Uses Crt;

var
A : Array[1..50,1..50] of integer; {* матрица смежности *}
B : Array[1..50,1..100] of integer; {* матрица инцидентности *}
orgraph : boolean;
lines: integer;
n,i,j,k: integer;
inputIsCorrect: boolean;

Begin
ClrScr;
lines:=0;
Write('Введите количество строк матрицы= ');
ReadLN(n);
Write('Введите количество столбцов матрицы= ');
ReadLN(n);
WriteLN('Введите ',n*n,' элементов матрицы построчно через пробел, Enter, вводим очередную строку:');
For i:=1 to n Do
For j:=1 to n Do
Read(A[i,j]);

inputIsCorrect:=true;
for i:=1 to n do
for j:=1 to n do
begin
if (A[i,j]<>1) and (A[i,j]<>0) then
inputIsCorrect:=false;
if A[i,j]<>A[j,i] then
inputIsCorrect:=false;
if A[i,j]=1 then
lines:=lines+1;
end;
if inputIsCorrect=true then

orgraph := false;
for i := 1 to n do
if A[i,i]<>0 then orgraph := true;

if orgraph=true then

begin
for i:=1 to n do
for k:=1 to n do
B[i,k]:=0;
k:=0;
for i:=1 to n do
for j:=1 to n do
if (A[i,j]=1) and (i<>j) then
else
if (A[i,j]=1) and (i=j) then
begin
k:=k+1;
B[i,k]:=1;
B[j,k]:=-1;
B[i,k]:=2;
end;
end
else
if orgraph=false then
begin
for i:=1 to n do
for k:=1 to n do
B[i,k]:=0;

k:=0;
for i:=1 to n do
for j:=1 to i do
if (A[i,j]=1) and (i<>j) then

begin
k:=k+1;
B[i,k]:=1;
B[j,k]:=1;

end;
end;
WriteLN('Матрица инцидентности:'); {* выводим матрицу таблицей *}
For i:=1 to n Do
Begin
For j:=1 to k Do
Write(B[i,j],' ');
WriteLN;
End;
Writeln(' Нажмите любую клавишу для окончаня работы...');

readkey;
end.
vavira вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение центра графа заданной матрице инцидентности emsisem Помощь студентам 3 27.10.2011 13:19
Определение центра графа заданной матрице инцидентности emsisem Общие вопросы C/C++ 2 27.10.2011 13:09
Определение центра графа заданной матрице инцидентности emsisem C++ Builder 0 27.10.2011 12:48
TurboPascal: графы, матрицы смежности и матрицы инцидентности. ulala Помощь студентам 1 03.03.2011 19:28