static int Do ( GRAPH G)
{
//----------------------------VARIABLES--------------------------
int i,j;
int Xstart; // НАЧАЛЬНАЯ ВЕРШИНА
int Xend; // КОНЕЧНАЯ ВЕРШИНА
int p; //номер кратчайшего пути и наименьшей длины
unsigned int flag[16]; // ВЕКТОР, ОПРЕДЕЛЯЮЩИЙ КАКИЕ ВРЕШИНЫ УЖЕ ПОСЧИТАНЫ
//G.War - Матрица смежности
int path[50][16]; //записываются вершины составляющие кратчайший путь
unsigned int L[16]; // здесь длины путей от начальной до каждой
//------------------------------END OF VARIABLES----------------
for (i=0;i<G.Nu;i++)
for(j=0;j<G.Nu;j++)
if(G.War[j]==0) G.War[j]=65535;
cout<<endl<<"Assign start point"<<endl;
cin>>Xstart;
cout<<endl<<"Assign destination point"<<endl;
cin>>Xend;
Xstart--;
Xend--;
if(Xstart==Xend)
{
cout<<endl<<" Sorry, start and end point is the same"<<endl;
getchar();
return 0;
}
for(i=0;i<G.Nu;i++)
{
flag=0;
L=65535;
}
L[Xstart]=0; //МЕТКА НАЧАЛЬНОЙ ТОЧКИ РАВНА НУЛЮ
flag[Xstart]=1;
p=Xstart; // начальная - текущая точка
for (i=1;i<=G.Nu; i++)
path=Xstart+1;
do
{
for(i=0;i<G.Nu;i++)
if ((G.War!=65535)&&(!flag)&&(i!=p))
{
if (L>(L+G.War))
{
path[i+1]=i+1;
}
L=minim(L,L+G.War);
}
p=min(G.Nu);
flag=1;
}
while (p!=Xend);
if (L!=65535)
{
cout<<endl<<" Shortest path is";
for (j=0;j<i;j++)
cout<<" "<<path[p+1][j]<<endl;
cout<<"Its length is "<<L<<endl;
}
else
cout<<"This way doesnot exist"<<endl;
getchar();
return 0;
// int l;
}
unsigned int minim (unsigned int x, unsigned int y)
{
if(x<y) return x;
return y;
}
int min (int n)
{
int i,result;
for(i=0;i<n;i++)
if (!(flag) ) result=i;
for(i=0;i<n;i++)
if((L[result]>L)&&(!flag)) result=i;
return result;
}
Как организовать обращение одной функции к элементам, объявленным в другой фунцкии?
Прочитайте сначала вопрос снизу
Код:
Как организовать обращение последней функции к переменным, объявленным в первой?
И вообще возможно другим для других функций обращаться к элементам данной?
Что-то у вас месиво какое-то в коде. Для передачи данных из одной функции в другую используйте параметры (ссылки, указатели - если требуется модификация). Или выносите общие данные на уровень выше. А в "простыню" вашу даже смотреть не охота.
Цитата:
Как организовать обращение последней функции к переменным, объявленным в первой?
Глобальные переменные, указатели(тут нужно быть осторожным) или курить ООП.
Цитата:
И вообще возможно другим для других функций обращаться к элементам данной?
Нет(а деже если и можно как-то извратиться в C++, то лучше даже не пытаться, если точно не знать к чему это приведёт).