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

Визуализация графа (реализация алгоритма) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить по координатам http://www.cyberforum.ru/cpp-beginners/thread793853.html
Привет всем!Помогите,пожалуйста,нужно проверить,лежит ли точка в этом ромбе или нет,вообщем-логические операции.Спасибо большое.
C++ Пытался изменить чужую программу, не смог понять смысл оператора стрелочка #include <iostream> #include "CalcEval.h" using namespace std; int main (int argc, char *const argv) { FILE *WorkOut = fopen("C:\\WORK\\CalcEval.Out", "w"); CalcEval *eval = new CalcEval(); eval->getMultAB(2f, 2f); // не понимаю смысла этой стрелочки fputs(eval, WorkOut); // хотел сбросить полученную строку в файл - не фортануло http://www.cyberforum.ru/cpp-beginners/thread793850.html
Вычислить значения синусов C++
Помогите пожалуйста решить задачу на си++ Вычислите значения а) sin x + sin2x + ... + sinnx; б) sin x + sin2x2 + ... + sinnxn; в) sin x + sin x2 + ... + sin xn ; г) sin x + sin sin x+ .. + sin sin...sin x (n раз).
C++ Для заданного вектора X(2N ) вычислить выражение
Помогите пожалуйста решить задачу на си++ Для заданного вектора X(2N ) вычислите Y = x1 - x2 + x3 - ... - x2N . Создавайте тему в соответствующем разделе. Один вопрос - одна тема
C++ Определить, имеется ли среди заданных целых чисел A, B, C хотя бы одно чётное http://www.cyberforum.ru/cpp-beginners/thread793834.html
Помогите пожалуйста решить задачу на си++ Определите, имеется ли среди заданных целых чисел A, B, C хотя бы одно чётное.
C++ Решить линейное уравнение ax = b Помогите пожалуйста решить задачу на си++ Решите линейное уравнение ax = b. подробнее

Показать сообщение отдельно
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
27.02.2013, 01:20  [ТС]     Визуализация графа (реализация алгоритма)
Пришел к тому что нужно формировать еще и контейнер со входящими ребрами
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
struct vertex
{
    string name;
    int level;
    bool used;
    vertex(string _name):name(_name),level(0),used(false){}
};
//---------------------------------------------------------------------------
struct edge
{
     vector<int> out;   //  Исходящие ребра
     vector<int> in;    //  Входящие ребра
};
//---------------------------------------------------------------------------
void add_adge(int from,int to, vector<edge>& edges)
{
    edges[from].out.push_back(to);
    edges[to].in.push_back(from);
}
//---------------------------------------------------------------------------
void dfs( vector<vertex>& v, vector<edge>& e, int index ,int start_level=1)
{
    if(! v[index].used)
     {
         v[index].used= true;
         v[index].level= start_level;
 
         for(size_t d=0; d< e[index].out.size(); d++) //  движемся вниз по графу
                dfs(v,e,e[index].out[d],start_level+1) ;
 
         for(size_t u=0; u< e[index].in.size(); u++)  //  движемся вверх по графу
                dfs(v,e,e[index].in[u], start_level-1) ;
     }
}
//---------------------------------------------------------------------------
void print( vector<vertex>& v)
{
    for(int level= -5; level< 10; ++level)//Уровни могут быть отрицательными
        {
            cout<<"level#"<<level<<"\t";
            for(size_t i=0; i<v.size(); ++i)
                if(v[i].level== level) cout<<v[i].name<<"\t";
            cout<<endl;
        }
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
vector<vertex> vertexes;
 
vertexes.push_back(vertex("0."));
vertexes.push_back(vertex("1."));
vertexes.push_back(vertex("2."));
vertexes.push_back(vertex("3."));
vertexes.push_back(vertex("4."));
vertexes.push_back(vertex("5."));
vertexes.push_back(vertex("6."));
vertexes.push_back(vertex("7."));
vertexes.push_back(vertex("8."));
vertexes.push_back(vertex("9."));
vertexes.push_back(vertex("10."));
 
vector<edge> edges(vertexes.size() );
 
add_adge(0,2,edges);
 
add_adge(1,2,edges);
add_adge(1,5,edges);
 
add_adge(2,3,edges);
add_adge(2,4,edges);
 
//add_adge(2,5,edges);   //  Test
 
add_adge(5,6,edges);
 
add_adge(7,8,edges);
add_adge(7,9,edges);
 
add_adge(8,5,edges);
 
add_adge(10,5,edges);
 
 
dfs(vertexes,edges,1);
 
print(vertexes);
 
getchar();
return 0;
}
//---------------------------------------------------------------------------
Вывод:
level#-5
level#-4
level#-3
level#-2
level#-1
level#0 7.
level#1 0. 1. 8. 9. 10.
level#2 2. 5.
level#3 3. 4. 6.
level#4
level#5
level#6
level#7
level#8
level#9
 
Текущее время: 00:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru