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

Алгоритм Дейкстры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны сведения о 20 владельцах авто http://www.cyberforum.ru/cpp-beginners/thread229302.html
Помогите пожалуйста с 2-я задачами 1. Даны такие сведения о 10 человек: фамилия, пол и дата рождения (дата типа структура). Определить возраст каждого, и вывести на экран фамилии тех, кто достиг пенсионного возраста (мужчины старше 60, женщины - 55). 2. Даны такие сведения о 20 владельцах авто: фамилия водителя, марка машины, и ее номер (целое число), пробег (целое число). Найти фамилию...
C++ Найти сумму элементов между нулевым и максимальным значениями Найти сумму элементов массива А , заключенных между единственным нулевым и максимальным значениями массива, не включая эти элементы. http://www.cyberforum.ru/cpp-beginners/thread229285.html
C++ vector
vector <int> v; for (int i = 0; i < 5; i++) { int temp; cin >> temp; v.push_back(temp); } можно как-нибудь по другому заполнить? Обойтись без переменной temp? как-нибудь вроде этого:
C++ Определить значение функции
Определить значение функции! Значения x и y должны быть введены с клавиатуры. Сама функция на скрине.
C++ Найти произведение элементов расположенных между двумя нулевыми элементами http://www.cyberforum.ru/cpp-beginners/thread229281.html
а вот эту можете решить?)) Массив А (100) содержит два нулевых элемента (номера которых не известны). Найти произведение элементов расположенных между ними.
C++ Объявлние классов в разных заголовочных файлах Приветствую всех участников форума. Есть 2 класса А и В. Каждый из содержит указатель на другой класс. Как сделать объявление классов в разных заголовочных файлах? Сейчас использую один заголовочный файл примерно такого вида: //module.h class B; class A { B* pointer; }; подробнее

Показать сообщение отдельно
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
15.01.2011, 19:55     Алгоритм Дейкстры
Помогите найти ошибку плз. Первый шаг алгоритма выполняет правильно,а дальше-нет.
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
#include<iostream>
#include<fstream>
#include<iomanip>
#include<conio.h>
using namespace std;
 
int start,finish,n;
int ves[20][20],metka[20];
bool used[20];
 
void read_from_file()
 {
  ifstream f("deikstra.txt");
    f >> n >> start>> finish;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
       f>>ves[i][j];
 }
int find_minimum()
{
 int min;
 for(int i=1;i<=n;i++)
     if (!used[i]) min=i;
 for(int i=1;i<=n;i++)
     if(!used[i],metka[min]>metka[i]) min=i;
 return min;
}
void find_neighbours(int a)
{
 for(int i=1;i<=n;i++)
  if(ves[a][i]!=0,!used[i],metka[i]>ves[a][i]+metka[a])
   metka[i]=ves[a][i]+metka[a];
 used[a]=true;
}
void otladka()
{
 for(int i=1;i<=n;i++)
  cout<<i<<' '<<metka[i]<<' '<<used[i]<<' ';
 cout<<"\n";
}
bool finish_program()
{
 bool f=true;
 for(int i=1;i<=n;i++)
  if(!used[i]) f=false;
 return f;
}
int main()
  {
   read_from_file();
   for(int i=1;i<=n;i++)
    metka[i]=100;
   metka[start]=0;
   for(int i=1;i<=n;i++)
   while(!finish_program())
   {
    int nowusing=find_minimum();
    find_neighbours(nowusing);
    otladka();
   }
   cout<<metka[finish];
   cin.get();
  }
Файл deikstra.txt:
Pascal
1
2
3
4
5
6
7
8
9
10
11
 10 1 10
0 3 0 2 0 0 0 0 0 0
3 0 0 0 0 0 0 2 0 0
0 0 0 2 1 0 0 0 0 0
2 0 2 0 0 0 0 5 0 0
0 0 1 0 0 5 0 0 0 0
0 0 0 0 5 0 9 0 0 7
0 0 0 0 0 9 0 6 8 0
0 2 0 5 0 0 6 0 0 0
0 0 0 0 0 0 8 0 0 10
0 0 0 0 0 7 0 0 10 0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru