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

Графы: матрицы соединений и матрицы связей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти среди простых чисел, попадающих в этот промежуток, такое число, у которого сумма цифр максимальная http://www.cyberforum.ru/cpp-beginners/thread1066006.html
1.В функцию передаются границы числового интревала. Найти среди простых чисел, попадающих в этот промежуток, такое число, у которого сумма цифр максимальная. 2. Считать строку и вывести на экран только предложения, не содержащих запятых. Добавлено через 1 час 3 минуты Проверьте, пожалуйста как я пытался делать первую программу #include <stdio.h> #include <conio.h> #include <math.h> bool...
C++ Одна программа записывает данные в файл, а другая их считывает и выводит на экран Задача состоит в том чтоб одна программа записала данные в файл а другая их считала и вывела на экран как полагается, запись и считывание через бинарный режим должны осуществляться. Имеется класс object и у него два класса наследника triangle и uravn. int main(int argc,char* argv) {FILE* F; F=fopen(argv,"wb+"); char p; cout<<"vvedite kol-vo elementov"; int N; cin>>N; object** A; A= new... http://www.cyberforum.ru/cpp-beginners/thread1065996.html
Шаблонный класс очереди. Выводит сначала все индексы, потом все элементы C++
#include <iostream> #include <conio.h> using namespace std; const int SIZE=100; template<class X> class queue{ X q; int sloc, rloc;
C++ Строка не передаётся в функцию
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; str_while(char* str) { int i=0; while(str)
C++ Магия со статическими массивами http://www.cyberforum.ru/cpp-beginners/thread1065981.html
Предисловие: на форуме подняли топик http://www.cyberforum.ru/cpp-beginners/thread1065365.html , в голове сразу мелькнула мысль написать шаблонную функцию, которой не надо было-бы передавать размерность массива (на сколько я знаю это можно сделать если массив статический, а не выделяется динамически). Ближе к делу: по быстрому набросал следующий код (рабочий): #include <iostream>...
C++ Задача с использованием структуры и указателя Структура содержит поля: имя, фамилия , возраст. Надо заполнить с клавиатуры и передать через указатель в функцию , в к-ой вывести на экран Со структурой мне все понятно, но как к ней сделать указатель, так как типы полей разные и и в какую функцию передавать, если ввод и вывод сразу можно сделать в main ? Помогите пожалуйста разобраться) Struct my { char m;// фамилия char m;//имя int... подробнее

Показать сообщение отдельно
zewer
 Аватар для zewer
1022 / 713 / 72
Регистрация: 07.01.2011
Сообщений: 5,374
08.01.2014, 20:00     Графы: матрицы соединений и матрицы связей
Графом называется совокупность точек ( узлов), некоторые из которых соединены между собой направленными ребрами. Граф , состоящий из n узлов можно описать двумя матрицами порядка n : матрицей соединений и матрицей связей. Элемент матрицы соединений a[i,j] = 1, если граф содержит ребро направлено от узла i к узлу j и a[i,j] = 0 в другом случае . Элемент матрицы связей b[i,j] = 1, если с узла i можно попасть в узел j , двигаясь по ребрам и b[i,j] = 0 в другом случае .
Задача : ввести количество узлов некоторого графа. Задав произвольно матрицу соединений ( в интерактивном режиме или случайным образом ) , построить матрицу связей для этого графу . Предусмотреть графическое отображение такого графа и числовой вывод обеих матриц .

Я реализовал генерацию/ручной ввод матрицы соединений, и немножко написал о матрицы связей, но не могу правильно задать алгоритм для ее создания. Прошу помочь, и так же подсказать как сделать графическое отображение такого графа. Написан мной код привожу:

C++
1
2
3
4
5
//---head.h
void manual_input(int &N, int **&Matrix);
void auto_input (int &N,int **&Matrix);
void matrix(int size, int**&M);
void create_matrix(int &N, int **&Matrix_2, int **&Matrix);

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
//----input.cpp
#include "iostream"
#include "head.h"
#include <time.h>
 
using namespace std;
 
void manual_input(int &N, int **&Matrix) //ручной ввод
{
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
        {
            cin>>Matrix[i][j];
            cout<<"\t";
        }
        cout<<endl;
    }
}
 
void auto_input (int &N,int **&Matrix)//случайная генераций матрицы
{
    srand(time(0));
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
        {
            if (i == j)
                Matrix[i][j] = 0;
            else
                Matrix[i][j] = rand()%2;
        }
    }
}
 
void matrix(int size, int**&M)//инициализация и выделения памяти под матрицы
{
    M=new int*[size];
    for(int i=0;i<size;i++)
        M[i] = new int[size];
}
 
void create_matrix(int &N, int **&Matrix_2, int **&Matrix)//создание матрицы связей
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (i == j)
                Matrix_2[i][j] = 0;
            else
            {
                int ii=i;
                int jj=j+1;
                if (Matrix[i][j] == 1)
                    Matrix_2[i][j] = 1;
                else if (Matrix[i][j] == 0)
                {//--------не могу придумать алгоритм
                    while (ii<N)
                    {
                        for (jj; jj<N; jj++)
                        {
                            if (Matrix[ii][jj] == 1)
                            {
                            
                            }
                        }
                    }
 
                }//-------------------
            }
        }
    }
}

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
//-----main.cpp
#include "iostream"
#include <locale>
#include "head.h"
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Russian");
    cout << "Введiть порядок матрицi: ";
    int g = 0;
    cin >> g;
    int** Matrix; //Матриця з'єднаннь
    matrix(g, Matrix);
    cout << "\n";
    cout << "Автогенерацiя(1) чи ручний ввiд(2)? - ";
    int t;
    cin >> t;
 
    //----------------Матриця з'єднаннь--------------соединений
    if (t == 1)
        auto_input(g, Matrix);
    else if (t == 2)
        manual_input(g, Matrix);
    //-----------------------------------------------
 
    //----------------Матриця зв'язків--------------связей
    int** matrix_2;
    matrix(g, matrix_2);
    create_matrix(g, matrix_2, Matrix);
    //-----------------------------------------------
 
    for(int i=0;i<g;i++)
    {
        for(int j=0;j<g;j++)
        {
            cout << matrix_2[i][j] << " ";
        }
        cout << "\n";
    }
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru