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

Дан набор координат точек. Начиная с первой, проложить кратчайший маршрут.... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ SDK VC++ http://www.cyberforum.ru/cpp-beginners/thread155045.html
я новичок в C++ ..... пишу програму для опредиления железа(процессор, озу и т.п) у меня установлен VC++ Express Edition 2005.... у меня постоянно возникают проблемы с <windows.h> - у меня етого файла воопше нет... искал в инете - понял что нада установить SDK,но не знаю как с етим разобратся(етих SDK много,а какой мне нужен незнаю)....
C++ квадрат Добрый вечер, подскажите как из это сделать квадрат 4х4? #include <iostream> using namespace std; void main () { int n=4; int m=4; for(int i=0; i<n; i++) http://www.cyberforum.ru/cpp-beginners/thread155037.html
Warning! Source file is not compiled! C++
создаю абстрактный класс ABCd #ifndef _ABCD_H_ #define _ABCD_H_ class ABCd { private: char performers; char label; int selections; double playtime;
list.push_back ошибка! C++
Только начинаю писать на C++. Помогите пожалуйста разобраться в ламерской ошибке! В классе инициализирую list<CProgressCtrl>. Затем в методе пытаюсь положить в неё объект и получаю ошибку компиляции error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'. В чем может быть дело? list<CProgressCtrl> m_observers; void...
C++ Работа с указателями в ООП http://www.cyberforum.ru/cpp-beginners/thread155016.html
Столкнулся впервые с указателями, используемыми в подобном примере. Для них не нужно задавать максимальное кол-во элементов, правильно понимаю? В коде выделил курсивом вопросы, относящиеся к пониманию процесса работы с указателями. Кто имеет время 10 - 15 минут, ответьте, пожалуйста, на вопросы достаточно глубоко для правильного понимания. Спасибо #include <iostream> #include <cstdlib>...
C++ решите задания по массивам 1. Вывести на печать все слова, составляющие не более чем из пяти букв. 2. Преобразовать строчную букву в заглавную русского алфавита с А до Б 3. Для матрицы n*m ,n меньше или равно 10, m меньше или равно 15 и в этой матрице исключить все строки,соединяющее нулевые элементы СПАСИБО! подробнее

Показать сообщение отдельно
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,316
02.08.2010, 21:38  [ТС]     Дан набор координат точек. Начиная с первой, проложить кратчайший маршрут....
Цитата Сообщение от Crudelis Посмотреть сообщение
я изучаю с++ и до векторов не дошел к сожалению, не могу ничего сказать
Вот и я не дошел :-). Но зато, изучая вопрос нашел что его можно решить с помощью алгоритма Дейкстера. Я написал пример, но чтобы не вводить данные использовал массивы заранее заданного размера на 5 точек. и сразу задаю координаты, но вот не задача все работает но как только меняешь координаты теряюсь в результате может кто доработает этот код и укажет на ошибку, проверки сделаны чисто для пользователя в дальнейшем я их удалю. ВОт гляньте кто нибудь код,где ошибки , почему нормально не работает.
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
#include <iostream.h>
#include <math.h>
 
 
const int KolT=5;//количество точек
///////////////////////////////////
void main()
{
    double X[]={1,2,3,4,5}, Y[]={1,1,1,1,1},//координаты точек
           MasDl[KolT][KolT],//массив для хранения матрицы длин
           DlToch[KolT],//массив куда копируются длины от текущей точки до всех остальных
           Dlin, Dt, 
           NToch[KolT];//массив хранящий последовательность номеров точек
    int j=0,i=0,k=0;
    unsigned long int Max;// бесконечно большое число
    bool IndT[KolT];// массив индикатор прошли точку 1 или нет 0
//////////////////показываем какие у нас координаты/////////////////
    cout << "Vvedennie coord:\n";
        for(i=0; i<KolT; i++)
        {
            cout <<"Tochka "<<i+1<<": X="<<X[i]<<"Y="<<Y[i]<<"\n";
            for (j=0;j<KolT;j++)
            {
            Dlin=sqrt(((X[i]-X[j])*(X[i]-X[j]))+((Y[i]-Y[j])*(Y[i]-Y[j])));//находим расстояния между точками
 
                if(Dlin!=0)// если не 0 записываем в массив матрицы длин
                {
                MasDl[i][j]=Dlin;
                }
                else // иначе приравниваем длинну к бесконечно большой
                {
                MasDl[i][j]=Max;
                }
 
            }
        }
        cout<<"\n";
/////////////////проверка матрицы длин///////////////
cout<<"Matrica Dlin megdu tochkami\n";
 
    for (i=0;i<KolT;i++)
    {
        for (j=0;j<KolT;j++)
        {
        
        cout << MasDl[i][j]<<"   ";
        }
    cout<<"\n";
    }
    cout<<"\n";
/////////////////проверка массива индикатора и обнуление его///////////////
    cout<<"Massiv Indikator"<<"\n";
    for (i=0;i<KolT;i++)
    {   
        IndT[i]=0;
        cout << IndT[i]<<" ";
    }
    cout<<"\n";
////////////////////////////////
////////////////подготовка данных////////////////
    for (i=0;i<KolT;i++)
    {
        NToch[i]=i;cout<<"Tochka:"<<NToch[i]<<" ";// номер  точки
        IndT[i]=0;cout<<"Ee indikator:"<<IndT[i]<<" ";//обнуление (еще раз ну это можно удалить)
        DlToch[i]=MasDl[i][0];cout<<"Perv znac:"<<DlToch[i]<<" \n";//первая длинна текущей точки
    }
////////////////Поиск кратчайшего пути////////////////
    NToch[0]=0;//задаем начало
    IndT[0]=1;
    Dt=Max;// минимальная длина делаем ее большой
    cout<< "Posled tochek:";
    for(i=0;i<(KolT-1);i++)
    {
        Dt=Max;
        for (j=0;j<KolT;j++)
        {
        if((IndT[j]==0)&&(Dt>DlToch[j]))// сравниваем и ищем минимальную длинну для точки
        {
            Dt=DlToch[j];
            k=j;//запоминаем близ лежащую точку
        }
 
        IndT[k]=1;// меняем индикатор длижней точки на пройденную
        if((IndT[j]==0)&&(DlToch[j]>(DlToch[k]+MasDl[k][j]))) //еще раз смотрим массив на наличие блжайшей точки и сравниваем расстояние уже с найденной
        {
            DlToch[j]=DlToch[k]+MasDl[k][j];
            NToch[j]=k;//запоминаем номер
        }
        }
        cout<<NToch[k]<<" "; //вывод точек как они связываются
    }
 
    
    cout<<"\nMinimalnoe rasstoyanie: "<<Dt<<"\n";// вывод мин.расстояния
////////////////////////////////
    cout<<"Massiv Indikator"<<"\n";
    for (i=0;i<KolT;i++)
    {   
        cout << IndT[i]<<" ";//проверим индикатор все ли точки прошли
    }
    cout<<"\n";
////////////////////////////////
}
Кстати я планирую вывод графика на OpenGL сделать может кто сразу до ума доведет прогу :-)))

Добавлено через 2 минуты
И еще если код пишите хоть какой нибудь коммент вставляйте, ведь уровень у всех разный. Заранее спасибо:-)))

Добавлено через 2 минуты
Цитата Сообщение от Mr.X Посмотреть сообщение
Не знаю, у меня в Visual Studio нормально работает.
Что у всех эта прога работает? :-((( Я что один такой у которого ошибки
 
Текущее время: 17:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru