0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 24
1

собрать программу. окружение графа.

15.12.2010, 21:18. Показов 1097. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в течении двух недель нужно написать курсовую, помогите пожалуйста.
Задание: Граф задаётся своей матрицей смежности, вывести на экран окружение каждой его вершины.

имеются части программы, помогите собрать, желательно используя именно данные здесь имена переменных и функций.
Ввод матрицы смежностей:
C++
1
2
3
4
5
6
7
int*get_matrix( int N)
{int*Ar2=new int[N*N]; //N - количество вершин, Ar2 - массив с матрицей смежностей
for(int Row=0;Row<N;Row++) //Row - строка
for(int Col=0;Col<N;Col++) //Col - столбец
cout<<"M["<<Row<<"]["<<Col<<"]=";
cin>>Ar2[Row*N+Col];
return Ar2;}
Вывод матрицы смежностей графа на экран:
C++
1
2
3
4
5
6
void out_matrix(int*Ar2,int N)
{ for(int Row=0;Row<N;Row++)
for(int Col=0;Col<N;Col++)
cout<<Ar2[Row*N+Col]<<" ";
cout<<'\n';
}
Функция, возвращающая результат обхода графа (обход не нужен, нужно только окружение, выбрать не смогла):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
struct Result{int*Ar1,int*Nu}; //Ar1 - массив, Nu - количество элементов в массиве
Result obhod(int*Matr,int Beg, int N) //Beg - вершина,с  которой начинается обход
{Result R;
 R.Ar1=new int[N]
 R.Nu=-1;
int*T=new int[N*N]; //Т - стэк, содержащий результат обход графа в глубину
int*Was=new int[N]; // Was - массив с элементами, в которых были (при первом обходе посещенную вершину помечают цифрой 1, не посещенную - цифрой 0, чтобы не проходить одну и ту же вершину несколько раз
Result Okr; // Okr - массив с окружением
Okr.Ar1=new [N];
Okr.Nu=-1;
int Vert; //Vert - текущая проверяемая вершина
for(int i=0;i<n;i++)
Was[i]=0;
int CT=-1; // СТ - количество элементов в стэке
T[++CT]=Beg;
do
{ Vert=T[CT--];
R.Ar1[++R.Nu]=Vert;
Okr=get_okr(int Vert,int*Matr,Was[i]=N);
for(int i=0;i<Okr.Nu;i++)
if(Was[Okr.Ar1[i]==0)
{T[++CT]=Okr.Ar1[i];
Was[Okr.Ar1[i]=1;}
while(CT)>-1;
return R;}
Result get_okr(int Vert,int*Matr,int N)
{Result x;
x.Ar1=new int[N];
x.Nu=-1;
for(int i=0;i<N;i++)
if(Matr[Vert*n+i]=1)
x.Ar1[++x.Nu]=i;
return x;}
в программе находится окружение только одной вершины, нужно вывести окружение всех вершин графа.
буду очень рада рассмотреть все решения поставленной задачи, даже не зависимо от предоставленных блоков программы.)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2010, 21:18
Ответы с готовыми решениями:

Подскажите окружение и обхват графа, чему равен здесь?
Подскажите окружение и обхват графа, чему равен здесь? Нашел радиус: r=min(e(v))=2, нашел диаметр:...

Эмуляция Lazarus: Окружение - Параметры (Окружение)
1. Проанализируйте заданную форму и выделите основные визуальные и не визуальные компоненты...

Нахождение фактора графа и остова графа для некоторого произвольного графа (5-6 вершин)
Форумчане прошу помощь в выполнение задания по деск. мат. Задание: Нахождение фактора графа и...

Создайте программу обхода графа в ширину
Создайте программу обхода графа в ширину, помогите пожалуйста

3
Эксперт С++
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
15.12.2010, 22:02 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
 
int*get_matrix( int N)
{int*Ar2=new int[N*N]; //N - количество вершин, Ar2 - массив с матрицей смежностей
for(int Row=0;Row<N;Row++) //Row - строка
for(int Col=0;Col<N;Col++) //Col - столбец
{cout<<"M["<<Row<<"]["<<Col<<"]=";
cin>>Ar2[Row*N+Col];}
return Ar2;}
 
 
void out_matrix(int*Ar2,int N)
{ for(int Row=0;Row<N;Row++)
{for(int Col=0;Col<N;Col++)
cout<<Ar2[Row*N+Col]<<" ";
cout<<'\n';}
}
 
void out_okr(int*Ar2,int N)
{
    for(int Row=0;Row<N;Row++)
    {
        cout<<endl<<"Vershina "<<Row<<" v okrugenii : ";
        for(int Col=0;Col<N;Col++)
            if(Ar2[Row*N+Col]!=0)
                cout<<" "<<Col;
    }
    cout<<endl;
}
 
int main() {
    int N, *Ar;
    cout<<"N= ";
    cin>>N;
    Ar=get_matrix(N);
    out_matrix(Ar, N);
    out_okr(Ar, N);
 
   return 0;
}
1
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 24
15.12.2010, 22:46  [ТС] 3
спасибо огромное-преогромное!!! очень-очень помогли!
0
1 / 1 / 0
Регистрация: 27.02.2012
Сообщений: 61
02.10.2012, 22:15 4
А что такое окружение графа, например окружение циклического графа???
0
02.10.2012, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2012, 22:15
Помогаю со студенческими работами здесь

Собрать программу
Добрый день. Такая проблема - есть код на C#, а собираться в программу он не хочет и не могу...

Запишите программу нахождения изолированных вершин графа
Помогите пожалуйста.Запишите программу нахождения изолированных вершин графа. Граф задан матрицей...

Не получается собрать программу
Здравствуйте ! Использую &quot;Geany&quot; в ОС &quot;Linuxmint 17&quot; Столкнулся с такой проблемой, пытаюсь...

Нужно собрать программу
Мне необходима программа для синхронизации контактов с ldap. Для этого есть программа на Android...

Собрать программу по коду
Ребят, помогите кто нибудь сделать из этого программку. У меня ничего не получается, прогу помогли...

собрать из файлов программу
компиляцию проходит, но выдает ошибку &quot;данное имя устройства уже используется приложением в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru