Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
achtung
 Аватар для achtung
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 24
15.12.2010, 21:18     собрать программу. окружение графа. #1
в течении двух недель нужно написать курсовую, помогите пожалуйста.
Задание: Граф задаётся своей матрицей смежности, вывести на экран окружение каждой его вершины.

имеются части программы, помогите собрать, желательно используя именно данные здесь имена переменных и функций.
Ввод матрицы смежностей:
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;}
в программе находится окружение только одной вершины, нужно вывести окружение всех вершин графа.
буду очень рада рассмотреть все решения поставленной задачи, даже не зависимо от предоставленных блоков программы.)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
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;
}
achtung
 Аватар для achtung
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 24
15.12.2010, 22:46  [ТС]     собрать программу. окружение графа. #3
спасибо огромное-преогромное!!! очень-очень помогли!
vikkov7
1 / 1 / 0
Регистрация: 27.02.2012
Сообщений: 61
02.10.2012, 22:15     собрать программу. окружение графа. #4
А что такое окружение графа, например окружение циклического графа???
Yandex
Объявления
02.10.2012, 22:15     собрать программу. окружение графа.
Ответ Создать тему
Опции темы

Текущее время: 12:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru