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

Вставить алгоритм Дейкстры в программу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сдвиг текста http://www.cyberforum.ru/cpp-beginners/thread1199437.html
Здравствуйте. У меня такой вопрос: у меня есть массив, как мне сдвинуть его вправо на k элементов, начиная с определенного элемента, при этом нельзя использовать обычный перебор массива, то есть я не могу попросту взять циклически каждый элемент сдвинуть вправо. Помогите пожалуйста.
C++ Не работает метод класса class Lines { private: char *line; public: void setLine(char *l) { int len = strlen(l); http://www.cyberforum.ru/cpp-beginners/thread1199434.html
C++ У меня в игре змейка поле заполнено буквой a. Как сделать поле пустым?
# include <iostream> # include <windows.h> # include <time.h> # include <conio.h> using namespace std; int snake_size, change_x, change_y, coordinates_x, coordinates_y, food_x = -1, food_y = -1; char symbol, a; const int N = 13, M = 17, INTERVAL = 200; void change_direction()
С++ Класс треугольник C++
Добрый вечер! Я вновь со своей задачей, извините что снова беспокою. (Разработать класс на языке С++ реализующий методы для работы с треугольником: построение треугольника, нахождение площади, периметра, длин сторон). Я вроде бы написал, но с классами, в отличие от вычислений, у меня так и не получается нормально разобраться. Посмотрите пожалуйста, что я объявляю не так. #include <math.h>...
C++ Удаление данных из структуры http://www.cyberforum.ru/cpp-beginners/thread1199416.html
Необходимо из структуры удалить данные (средняя оценка), которые меньше вводимого числа М. Я пробовал прописать функцию, но она почему-то не работает (т.е. я не записываю обнуленные данные). В чем причина? Ф-я удаления : int Delete(char *fileName) { FILE *f; struct Rec1 *a; int n,i,j; float M; if ((f=fopen(fileName,"rb+"))==NULL)
C++ С + + преобразования из двумерного массива в одномерный Переписать элементы, расположенные выше вспомогательной диагонали в одномерный массив S1, а элементы, расположенные ниже вспомогательной диагонали в одномерный массив S2. Помогите с программой, а то вообще не могу въехать, что они от меня хотят! подробнее

Показать сообщение отдельно
dexman
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 3
04.06.2014, 22:26     Вставить алгоритм Дейкстры в программу
Вот рабочая программа которая находит кратчайшый путь по алгоритму Дейкстры
Вложение 407639

Вложение 407640

А вот моя в которую нужно вставить алгоритм
Вложение 407642

Еще вот пограмка которая находит кратчайший путь по алгоритму Дейкстры но результат там неправильный
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
   //Алгоритм Дейкстры.поиска кратчайшего пути
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
 
#define VERTEXES 9  //Число вершин в графе
 
int v;
int main(int argc, char* argv[])
{
   clrscr();
   int infinity=1000;                     // Бесконечность
   int p= VERTEXES;             // Количество вершин в графе
   int a[VERTEXES][VERTEXES]= { 0,7,0,0,0,  // Матрица смежности графа
                                7,0,6,0,0,
                                0,6,0,8,0,
                                0,0,8,0,10,
                                0,0,0,10,0,
                                };
 
 
 
   // Будем искать путь из вершины s в вершину g
   int s;                   // Номер исходной вершины
   int g;                   // Номер конечной вершины
   cout<<"Vvedit s: ";     // Номер может изменяться от 0 до p-1
   cin>>s;
   cout<<"Vvedit g: ";
   cin>>g;
   int x[VERTEXES]; //Массив, содержащий единицы и нули для каждой вершины,
                  // x[i]=0 - еще не найден кратчайший путь в i-ю вершину,
                  // x[i]=1 - кратчайший путь в i-ю вершину уже найден
   int t[VERTEXES];  //t[i] - длина кратчайшего пути от вершины s в i
   int h[VERTEXES];  //h[i] - вершина, предшествующая i-й вершине
                 // на кратчайшем пути
 
   // Инициализируем начальные значения массивов
   int u;           // Счетчик вершин
   for (u=0;u<p;u++)
   {
      t[u]=infinity; //Сначала все кратчайшие пути из s в i 
    //равны бесконечности
      x[u]=0;        // и нет кратчайшего пути ни для одной вершины
   }
   h[s]=0; // s - начало пути, поэтому этой вершине ничего не предшествует
   t[s]=0; // Кратчайший путь из s в s равен 0
   x[s]=1; // Для вершины s найден кратчайший путь
   v=s;    // Делаем s текущей вершиной
   
   while(1)
   {
      // Перебираем все вершины, смежные v, и ищем для них кратчайший путь
      for(u=0;u<p;u++)
      {
         if(a[v][u]==0)continue; // Вершины u и v несмежные
         if(x[u]==0 && t[u]>t[v]+a[v][u]) //Если для вершины u еще не 
    //найден кратчайший путь
                // и новый путь в u короче чем 
    //старый, то
         {
            t[u]=t[v]+a[v][u];  //запоминаем более короткую длину пути в
    //массив t и
            h[u]=v; //запоминаем, что v->u часть кратчайшего 
    //пути из s->u
         }
      }
 
      // Ищем из всех длин некратчайших путей самый короткий
      int w=infinity;  // Для поиска самого короткого пути
      v=-1;            // В конце поиска v - вершина, в которую будет 
                       // найден новый кратчайший путь. Она станет 
                       // текущей вершиной
      for(u=0;u<p;u++) // Перебираем все вершины.
      {
         if(x[u]==0 && t[u]<w) // Если для вершины не найден кратчайший 
                               // путь и если длина пути в вершину u меньше
                               // уже найденной, то
         {
            v=u; // текущей вершиной становится u-я вершина
            w=t[u];
         }
      }
      if(v==-1)
      {
         cout<<"Net pyti iz vershini"<<s<<" v vershiny "<<g<<"."<<endl;
         break;
      }
      if(v==g) // Найден кратчайший путь,
      {        // выводим его
         cout<<"Korotshii pyti iz vershini "<<s<<" v vershiny "<<g<<":";
       u=g;
       while(u!=s)
         {
            cout<<" "<<u;
            u=h[u];
         }
         cout<<" "<<s<<". Dlinna pyti - "<<t[g];
       break;
      }
      x[v]=1;
   }
   getch();
}
/*Программа запрашивает вершины s и q и выводит кратчайший путь. Например, после ввода s = 3, q = 6, программа выводит 
 
Нет пути из вершины 3 в вершину 6. 
 
После ввода s = 0, q = 2 программа выводит 
 
Кратчайший путь из вершины 0 в вершину 2: 2 5 1 0. Длина пути = 3.*/


Поетому прошу помощи ато замучался уже
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru