var i,j,c: integer; a: array [1..5, 1..4] of integer; {матрица 5 строк(вершин), 4 столбца(ребра)} begin {заполняем матрицу случайными ребрами, у каждого ребра начало (1) и конец (-1)} for j:=low(a[1]) to high(a[1]) do { перебираем все ребра } begin a[1+random(high(a))][j] := 1; { ребро начинается на одной из вершин } repeat c:=1+random(high(a)) { выбираем вершину в которую приходит ребро } until a[c][j]=0; { проверка чтобы не создавать кольцевых связей } a[c][j]:=-1; { ребро входит в выбранную вершину } end; {вывобдим матрицу на экран} for i:=low(a) to high(a) do { перебираем все строки (вершины) } begin for j:=low(a[i]) to high(a[i]) do { перебираем все ребра } write(a[i][j]:2, ' '); { выводим инцидентность текущей вершины и текущего ребра } writeln; { переходим на следующую строку экрана } end; {считаем степень вершины (количество некольцевых ребер) } for i:=low(a) to high(a) do { для каждой строки (вершины) матрицы} begin c:=0; { сбрасываем счетчик степени вершины } for j:=low(a[i]) to high(a[i]) do { перебираем все вершины } if a[i][j]<>0 then { если вершина и ребро инцидентны } inc(c); { увеличиваем счетчик степени вершины } writeln('d(a[',i,']) = ', c); { выводим степень текущей вершины } end; end. |