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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
achtung
 Аватар для achtung
0 / 0 / 0
Регистрация: 05.05.2010
Сообщений: 24
#1

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

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

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

имеются части программы, помогите собрать, желательно используя именно данные здесь имена переменных и функций.
Ввод матрицы смежностей:
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;}
в программе находится окружение только одной вершины, нужно вывести окружение всех вершин графа.
буду очень рада рассмотреть все решения поставленной задачи, даже не зависимо от предоставленных блоков программы.)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2010, 21:18     собрать программу. окружение графа.
Посмотрите здесь:

C++ Составить программу печати всех циклов ориентированного графа
C++ как собрать программу из этих файлов?
Собрать программу из некоторых исходников C++
Не могу собрать программу C++
Как собрать программу, которая будет запускаться на других кампах с windows xp/7?? C++
C++ Не могу собрать программу для Raspbian
Как собрать программу из makefile C++
Для графа определить его двудольность и вывести обе доли (исправить программу) C++
Не могу собрать модульную программу C++
C++ Собрать программу без Visual Studio
Как собрать программу ?(Заранее прошу прощения, у администрации если что то нарушил) C++
Не получается собрать программу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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     собрать программу. окружение графа.
Ответ Создать тему
Опции темы

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