Witam,
Obecny mój problem wynika z niemożności ukazania drogi w grafie. Chciałbym aby program pokazywał z jakimi wierzchołkami łączy się dany wierzchołek np: wierzchołek 1 łączy się z 2 i3.
Napisalem oto taki program:
Jednak nawet nie dochodzi do jego kompilacji. Pomożecie w pokazaniu gdzie znajduje się problem i jak go naprawić.
Pozdrawiam
Obecny mój problem wynika z niemożności ukazania drogi w grafie. Chciałbym aby program pokazywał z jakimi wierzchołkami łączy się dany wierzchołek np: wierzchołek 1 łączy się z 2 i3.
Napisalem oto taki program:
#include <cstdlib>
#include <iostream>
using namespace std;
class Graf
{
private:
int graf[n][n];
const int n=6;
public:
int how;
R(int i){
how = i;
for(int i=0; i < how; i++)
{
for(int j=0; j < how; j++)
{
R[n][n]=0;
}
}
}
void zeruj(int R[n][n]);
void route(int R[n][n]);
void pisz(int x, int y, int R[n][n]);
};
void zeruj(int R[n][n])
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
R[i][j]=0;
}
void route(int R[n][n])
{
for(int x=0;x<n;x++)
for(int y=0;y<n;y++)
if(R[y][x]!=0) // wiemy jak dojϾ z 'y' do 'x'
for(int z=0;z<n;z++)
if(R[y][z]==0 && R[x][z]!=0) R[y][z]=R[y][x];
}
void pisz(int x, int y, int R[n][n])
{
int k;
if(R[x][y]==0)
cout << "Droga nie istnieje\n";else
{
cout << x << endl;
k=x;
while(k!=y)
{
k=R[k][y];
cout << k << endl;
}
}
cout << "----------------\n";
}
int main()
{
int i,j;
zeruj(graf);
graf[0][3]=3;
graf[0][5]=5;
graf[1][2]=2;
graf[2][4]=4;
graf[3][1]=1;
graf[3][4]=4;
graf[5][4]=4;
graf[4][5]=5;
graf[5][2]=2;
route(graf);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<"Doga od wierzcholka "<<i<<" do "<<j<<":\n";
pisz(i,j,graf);
getchar();
getchar();
}
}
Jednak nawet nie dochodzi do jego kompilacji. Pomożecie w pokazaniu gdzie znajduje się problem i jak go naprawić.
Pozdrawiam