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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2013, 15:40   #1
mistrelikver
Новичок
Джуниор
 
Регистрация: 26.01.2013
Сообщений: 1
По умолчанию Задача по теории графов

Уважаемые форумчане! Есть небольшое затруднение по поводу решения задачи:
Граф задаётся случайно, определить по матрице инцидентности является ли он полным или полным симметрическим.
По сути получается, что нам нужно посчитать степень вершины... Но матрица которая генерируется в данном варианте исполнения может содержать повторяющиеся столбцы.
Если не сложно подскажите как можно это исправить.

Код:
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;
begin
        readln;
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.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 31.01.2013 в 16:34.
mistrelikver вне форума Ответить с цитированием
Старый 01.02.2013, 14:51   #2
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,678
По умолчанию

Сделано за оплату, если что: mihal-nik[D O G]mail.ru
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 01.02.2013 в 19:58.
MihalNik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по теории графов sanyacvpx Помощь студентам 0 07.09.2012 11:13
Дайте совет по теории графов cheblya Помощь студентам 0 24.12.2009 08:35
C# Задача по теории графов templllar Общие вопросы .NET 0 15.12.2009 21:43