Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Вилли
0 / 0 / 0
Регистрация: 14.04.2016
Сообщений: 11
#1

Найти и исправить ошибки в реализации алгоритма Дейкстры

08.06.2016, 19:21. Просмотров 292. Ответов 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
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
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define word unsigned int
int i, j, n, p, xn, xk;
int flag[11];
word c[11][11], l[11];
char s[80], path[80][11];
int min(int n)
{
         int i, result;
         for(i=0;i<n;i++)
                   if(!(flag[i])) result=i;
         for(i=0;i<n;i++)
                   if((l[result]>l[i])&&(!flag[i])) result=i;
         return result;
}
word minim(word x, word y)
{
         if(x<y) return x;
         return y;
}
void main()
{
         cout<<"Vvedite kolichestvo tochek: ";
         cin>>n; 
         for(i=0;i<n;i++)
                   for(j=0;j<n;j++) c[i][j]=0;
         for(i=0;i<n;i++)
                   for(j=i+1;j<n;j++)
                   {
                       cout<<"Vvedite rasstoyanie ot  x"<<i+1<<" do x"<<j+1<<": ";
                       cin>>c[i][j];
                   }
         cout<<"   ";
         for(i=0;i<n;i++) cout<<"    X"<<i+1;
         cout<<endl<<endl;
         for(i=0;i<n;i++)
         {
                   printf("X%d",i+1);
                   for(j=0;j<n;j++)
                   {
                            printf("%6d",c[i][j]);
                            c[j][i]=c[i][j];
                   }
                   printf("\n\n");
         }
         for(i=0;i<n;i++)
                   for(j=0;j<n;j++)
                            if(c[i][j]==0) c[i][j]=65535; //бесконечность
         cout<<"Vvedite nachalnuy tochku: ";
         cin>>xn;
         cout<<"Vvedite konechnuy tochku: ";
         cin>>xk;
         xk--;
         xn--;
         if(xn==xk)
         {
                   cout<<"Nachalnaya I konechnaya tochki sovpadayt."<<endl;
                   getch();
                   return;
         }
         for(i=0;i<n;i++)
         {
                   flag[i]=0;
                   l[i]=65535;
         }
         l[xn]=0;
flag[xn]=1;
         p=xn;
         itoa(xn+1,s,10);
                   for(i=1;i<=n;i++)
                   {
                            strcpy(path[i],"X");
                            strcat(path[i],s);
                   }
                   do
                   {
                            for(i=0;i<n;i++)
                                      if((c[p][i]!=65535)&&(!flag[i])&&(i!=p))
                                      {
                                               if(l[i]>l[p]+c[p][i])
                                               {
                                                        itoa(i+1,s,10);
                                                        strcpy(path[i+1],path[p+1]);
                                                        strcat(path[i+1],"-X");
                                                        strcat(path[i+1],s);
                                               }
                                               l[i]=minim(l[i],l[p]+c[p][i]);
                                      }
                            p=min(n);
                            flag[p]=1;
                   }
                   while(p!=xk);
         if(l[p]!=65535)
         {
                   cout<<"Put: "<<path[p+1]<<endl;
                   cout<<"Dlina puti: "<<l[p]<<endl;
         }
         else
                   cout<<"takogo puti ne syshestvuet!"<<endl;
         getch();
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 19:21
Ответы с готовыми решениями:

Не найден заголовочный файл в реализации алгоритма Дейкстры
запускаю программу и выдает ошибку &quot;fatal error C1083: Не удается открыть файл...

Исправить ошибки в реализации пузырьковой сортировки
программа генерирует массив значений типа лонг и должна отсортировать массив....

Исследование быстродействия алгоритма - исправить ошибки в коде
Добрый день! Прошу подсказать несколько технических моментов ибо в c++...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не...

1
Croessmah
++Ͻ
14367 / 8149 / 1534
Регистрация: 27.09.2012
Сообщений: 20,085
Записей в блоге: 3
Завершенные тесты: 1
08.06.2016, 20:37 #2
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)


Добавлено через 4 минуты
Вилли, первая и, наверное,
основная ошибка - не информативные имена переменных.
Это сильно усложняет код, затрудняет его чтение и понимание.
Разбираться в подобном коде крайне не хочется, глаза выпадают.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 20:37

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; ...

Найти ошибки в реализации класса треуголник на плоскости
Реализовать класс &quot;Треугольник на плоскости&quot;. Поля - координаты вершин. ...

Реализация алгоритма Дейкстры
Кто может подсказать (или указать где найти) код алгоритма Дейкстры на С++?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru