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

Работа с графом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Траектория снаряда (где упадет снаряд ?) http://www.cyberforum.ru/cpp-beginners/thread1146923.html
Траектория снаряда, какой вылетает из пушки под углом \alpha 3 начальной скоростью {V}_{0} описывается уравнениями x={V}_{0}tcos\alpha, y={V}_{0}tcos\alpha-g\frac{{t}^{2}}{2} с точностью х = 2 км определить точку, в который снаряд "уйдет под землю". Задачу решить при \alpha =\frac{\pi }{3},V=35 км / мин и при \alpha =\frac{\pi }{4}, V=30 км / мин. (Указание: начиная с х = 0 с шагом 2 вычисляем...
C++ Определить функцию «дней с начала месяца», вычисляющую количество дней с начала месяца Ребят, такая проблема, написал прогу, которая "Описать структуру «дата» (год, месяц, день). Определить функцию «недель с начала года» вычисляющую количество недель с начала года.", а нужно переделать на "Описать структуру «дата» (год, месяц, день). Определить функцию «дней с начала месяца» вычисляющую количество дней с начала месяца." Заранее спасибо! #include "stdafx.h" #include... http://www.cyberforum.ru/cpp-beginners/thread1146921.html
C++ Работа с матрицей
Сразу прошу прощения за "говнокод", только начал изучать си. Задача: Есть матрица NxN. Она заполнена числами от 0 до 2 рандомным образом. Если в (любых)диагоналях есть три и более (параметр) подряд одинаковых чисел,то мы это фиксируем в массиве.(нужно найти кол-во таких комбинаций, для каждого числа) Пример: 0 1 0 2 1 1 0 1 1 1 ...
C++ Указатели и динамические массивы
Подсчитать кол-во участков, которые образуют непрерывные последовательности чисел с неуменьшающимися значениями
C++ Одномерный динам массив http://www.cyberforum.ru/cpp-beginners/thread1146910.html
вычислить количество элементов больших C вычислить произведение элементов расположенных после максимального по модулю элемента Добавлено через 1 час 39 минут первую часть сделал вот код using namespace std; int _tmain(int argc, _TCHAR* argv)
C++ Странности поведения матриц При реализации класса матриц магия C++ проявила себя уже на сложении. При сложении каким-то образом портится правый операнд (внутренняя перегрузка унарного плюса). Вылетает даже на простой модели с ошибкой обращения к памяти. Заголовочный класса: #ifndef MATRIX_H #define MATRIX_H #include <string> #include <sstream> using namespace std; подробнее

Показать сообщение отдельно
Myptuk
1 / 1 / 0
Регистрация: 01.05.2013
Сообщений: 43

Работа с графом - C++

13.04.2014, 13:30. Просмотров 140. Ответов 0
Метки (Все метки)

Смысл такой. Вводим поле n*m, вводим препятствие. (пустые клетки обозначены - 1, препятствия - 0). Строим матрицу смежности размером nk= n*m, анализируем поле (каждую клетку со смежными клетками по 4-м направлениям). куда можно сходить должны записать - 1, куда нельзя - 0. О своих косяках догадываюсь но исправить не могу, в общем помогите довести до рабочего состояния. заранее спасибо, эта работа для меня очень нужна, первый мой большой проект.

пример:
поле 2*2: (препятствие одно, координаты - 1,1, размеры - 1,1)
11
10
должна получиться матрица смежности:
0110
1000
1000
0000

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    int n, m, x, y, k, l, nkol;
    cout<<"Введите количество строк: ";
    cin>>n;
    cout<<"Введите количество столбцов: ";
    cin>>m;
 
    //создание массива, заполнение 1-ми
 
    int** a = new int* [n];
    for(int i=0; i<n; i++)
    {
        a[i] = new int[m];
        for(int j=0; j<m; j++)
        {
            a[i][j]=1;
        }
    }
 
    // вывод массива
 
    for(int i = 0; i < n; i++)
    {
        cout<<endl;
        for(int j = 0; j < m; j++)
        {            
            cout<<a[i][j]<<" ";
        }
    }
    cout<<endl;
    cout<<endl;
 
    //ввод препятствий, коррекция массива
 
    cout<<"Ввод препятствий (координаты x и y задают левый верхний угол препятствия):"<<endl;
    cout<<endl;
 
 
    cout<<"Введите количество препятствий: ";
    cin>>nkol;
 
    for (int g=1; g<=nkol; g++)
    {
        cout<<"Введите x"<<g<<": ";
        cin>>x;
        cout<<"Введите y"<<g<<": ";
        cin>>y;
        cout<<"Введите длину препятствия: ";
        cin>>k;
        cout<<"Введите ширину препятствия: ";
        cin>>l;
 
        for(int i=x; i<x+l; i++)
        {
            for(int j=y; j<y+k; j++)
            {
                a[i][j]=0;
            }
        }
        x=0;
        y=0;
        k=0;
        l=0;
    }
 
    // вывод скорректированного массива
 
    for(int i = 0; i < n; i++)
    {
        cout<<endl;
        for(int j = 0; j < m; j++)
        {            
            cout<<a[i][j]<<" ";
        }
    }
    cout<<endl;
 
    //создание матрицы смежности, массив b
 
    int nk;
    nk=n*m;
 
    int** b = new int* [nk];
    for(int q=0; q<nk; q++)
    {
        b[q] = new int[nk];
        for(int p=0; p<nk; p++)
        {
            for(int i=0; i<n; i++)
            {
                for(int j=0; j<n; j++)
                {
                    if (a[i][j]==1 && a[i][j+1]==1) // проверка вправо
                    {
                        b[q][p]=1;
                    }
                    else b[q][p]=0;
                    if (a[i][j]==1 && a[i][j-1]==1) // проверка влево
                    {
                        b[q][p]=1;
                    }
                    else b[q][p]=0;
                    if (a[i][j]==1 && a[i+1][j]==1) // проверка вниз
                    {
                        b[q][p]=1;
                    }
                    else b[q][p]=0;
                    if (a[i][j]==1 && a[i-1][j]==1) // проверка вверх
                    {
                        b[q][p]=1;
                    }
                    else b[q][p]=0;
                }
            }
        }
    }
 
    // вывод массива b
 
    for(int q = 0; q < nk; q++)
    {
        cout<<endl;
        for(int p = 0; p < nk; p++)
        {            
            cout<<b[q][p]<<" ";
        }
    }
 
    cout<<endl;
    cout<<endl;
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru