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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Добавление сортировки http://www.cyberforum.ru/cpp-beginners/thread159873.html
дана задача, основное написанно но нет сортировки... Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. сту-дента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убыва-ния среднего балла.помогите плиз...подскажите.. ...
C++ решить для программистов очень простая! Камни. Создать класс «Драгоценный камень». Подобрать камни для ожерелья. Посчитать общий вес (в каратах) и стоимость. ТРЕБОВАНИЯ. 1. Приложение должно быть написано на любом из языков: С++, С# или Java. 2. Использовать только стандартные компиляторы и библиотеки. 3. При кодировании должны быть использованы соглашения об оформлении кода для соответствующего языка – code convention.... http://www.cyberforum.ru/cpp-beginners/thread159808.html
Максимальный элемент матрицы с использованием потоков C++
#include "stdafx.h" #include <Windows.h> #include <iostream> #include <conio.h> using namespace std; int *Mas; struct ParamData{ int id;
Последовательная запись массива в .gz архив C++
Имеется спосок товаров ввиде массива. Элементы массива перебираю в цикле for и далее необходимо сразу записывать в gzip архив. Нашел вродебы подходящую функцию в библиотеке zlib, к сожалению в инете и здесь на форуме примеров вообще нет, есть только простое описание: int gzwrite (gzFile file, const voidp buf, unsigned len); Записывает переданное количество байт несжатых данных в компресованный...
C++ Где найти дистрибутив Visual Studio http://www.cyberforum.ru/cpp-beginners/thread159728.html
Желательно 2010 но если 2008 тоже неплохо гугл не помог
C++ В чем разница между exit(код возврата) и ExitProcess (код возврата)? Я так себе представляю, имеется два варианта выхода из приложения, с передачей кода возврата: 1. Функцией ExitProcess(код возврата); 2. Функцией exit(код возврата); Чем отличаются данные функции? подробнее

Показать сообщение отдельно
SergProgC++
Эксперт GPSS
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,361

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

17.08.2010, 21:09. Просмотров 2939. Ответов 13
Метки (Все метки)

Написал программу, проверил код, в MVS6 С++ компилируется без ошибок. Но вот не задача, программа рушиться(не выполняется) при количестве точек больше 6. Задача реализует алгоритм Дейкстер, начиная с первой точки прокладывает самый кратчайший путь так что были задействованы все точки по одному разу. Массив С в результате содержит последовательность точек.
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
#include <iostream.h>
#include <math.h>
#include <windows.h>//заголовочный файл с описаниями функций 
///////////////////////////////////
 
void MinPath(void);
////////////////////////////////////
int KolToch,i=0,r=0,k=0,j=0;
double Dlin, MD=0,Dt,Zoom=0;
///////////////////////////////////
double *X=new double[KolToch];
double *Y=new double[KolToch];
double   **A=new double *[KolToch];//массив для хранения матрицы длин
int       *C=new    int[KolToch];//массив хранящий последовательность номеров точек
bool      *S=new   bool[KolToch];// массив индикатор прошли точку 1 или нет 0к
double    *B=new double[KolToch];//массив куда копируются длины от текущей точки до всех остальных
 
///////////////////////////////////////////////////
    
void main()//главная функция
{
MinPath();
cin.get();  
}
///////////////////////////////////////////////////////////
void MinPath(void)
{
unsigned int Max;// бесконечно большое число
RusVivod("Введите количество точек: ");
cin>>KolToch;
 
for(i=0;i<KolToch;i++)
    {
    A[i]=new double[KolToch];
    }
for(i=0;i<KolToch;i++)
    {
    S[i]=0;
    C[i]=0;
    }
for(i=0;i<KolToch;i++)
    {
go: RusVivod("Введите координаты");cout<<i; RusVivod(" точки через пробел: ");
    cin>> X[i] >> Y[i];
        for(j=0;j<KolToch;j++)
        {
            if((X[i]==X[j])&&(Y[i]==Y[j])&&(i!=j))
            {
            RusVivod("Данная точка уже существует");
            goto go;
            }
        }
    }
RusVivod("Введенные координаты точек:");
for(i=0; i<KolToch; i++)
    {
    cout <<i<<": X="<<X[i]<<"Y="<<Y[i]<<"\n";
    for (j=0;j<KolToch;j++)
        {
        Dlin=sqrt(((X[i]-X[j])*(X[i]-X[j]))+((Y[i]-Y[j])*(Y[i]-Y[j])));//находим расстояния между точками
 
        if(Dlin!=0)// если не 0 записываем в массив матрицы длин
            {
            A[i][j]=Dlin;
            }
        else // иначе приравниваем длинну к бесконечно большой
            {
            A[i][j]=Max;
            }
 
        }
    }
cout<<"\n";
////////////////Поиск кратчайшего пути////////////////
for(i=0;i<(KolToch-1);i++)
    {
    Dt=Max;
    S[0]=1;
    C[0]=0;
    for(j=0;j<KolToch;j++)
        {
        B[j]=A[k][j];
        }
    for(j=0;j<KolToch;j++)
        {
        if((S[j]==0)&&(Dt>B[j]))
            {
            Dt=B[j];
            k=j;    
            }
        }
S[k]=1;
MD+=Dt;
C[i+1]=k;
}
Zoom=MD+5;
RusVivod("Длинна минимального пути:");
cout<<MD<<"\n";
////////////////////////////////////////////////////////////////////////////////////////////////
RusVivod("Последовательность точек минимального пути:");
for(j=0;j<KolToch;j++)
    {
    cout << C[j] <<" "; 
    }
cout<<"\n";
//////////////////////////////////////
}
Сразу скажу некоторые переменные относятся к графической части, я ее опустил....
Посодейсвуйте в поиске пожайлусто....:-)))
Добавлено через 1 минуту
А и еще при количестве точек 6 и меньше все работает :-((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru