Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2010, 22:37   #1
LENA_M
Пользователь
 
Регистрация: 24.04.2009
Сообщений: 98
По умолчанию координаты местоположения

Здравствуйте! Мне нужно создать граф поиска расстояния между городами России. я нашла простую программу на с++, мне нужно найти кратчайшее расстояние, например, между Москвой и Магаданом. Мне надо её изменить, то есть вместо простых чисел, вводить координаты городов (например широту, долготу городов), и расстояния между городами?
Код:
 
#include<iostream.h>
#include<iostream>
 
#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(void)
{
        cout<<"Zadejte pocet bodu: ";
        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<<" Zadejte vzdalenost 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; //nekonecno
        cout<<" Zadejte zakladny bod: ";
        cin>>xn;
        cout<<" Zadejte konecny bod: ";
        cin>>xk;
        xk--;
        xn--;
        if(xn==xk)
        {
                cout<<"zakladni a  konecne body se shoduji ."<<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<<"Cesty neexistuje!"<<endl;
        getch();
}

Последний раз редактировалось Stilet; 27.10.2010 в 08:19.
LENA_M вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Координаты A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 20:17
Определение местоположения курсора hackPNZ Microsoft Office Word 4 11.11.2009 14:02
Динамическое изменение местоположения БД в ADOCONNECTION Vol666 БД в Delphi 2 31.10.2009 07:21
Определение местоположения по IP Zer0 Работа с сетью в Delphi 8 27.12.2007 10:56
координаты Aram Общие вопросы C/C++ 5 08.06.2007 20:03