Član
- Učlanjen(a)
- 08.11.2012
- Poruka
- 4
Пронашао сам листинг програма за познати задатак трговачког путника, а који је на писан на С++. Тај листинг је изашао у јуну 1998. год. у часопису"Рачунари". Листинг је фотокопиран и неки делови кода су слабо видљиви (надам се да сам код добро прекуцао, без грешака). Пошто тај језик не познајем, може ли неко да ми преведе програм на Бејзик, или Клипер :lol: ?
#include<>iostream.h>
#include<>stdio.h>
#define MAXG1 7
#define MAXG2 128
class Trgovacki_putnik
{
int broj_cvor, d[][MAXG1], L[MAXG1][MAXG2];
public:
Trgovacki_putnik();
int Broj_el( int i );
int Najkraci_Put();
};
Trgovacki_putnik::Trgovacki_putnik()
{
int i,j;
printf( "\t\t\tPROBLEM TRGOVAČKOG PUTNIKA\n" );
printf("\t\t\t-----------------------------------------------\n\n" );
printf("Broj čvorova grafa je: " );
scanf( "%d",&broj_cvor );
printf("\nUnesi elemente matrice rastojanja:\n" );
for (i=0; i <> broj_cvor; i++ )
for (j=0; j <> broj_cvor; j++ )
if (i <> j ) {
printf( "d[%d][%d] = " );
scanf( "%d", &d[j] );
}
}
int Trgovacki_putnik::Broj_el( int i )
{
int j, k;
for (k=j=0; i;j++)
if (i & (1<><>j))
{
k++;
i -= 1<><>j;
}
return( k );
}
int Trgovacki_putnik::Najkraci_put()
{
int I, j, k, l,m, n;
for (i=0, m=1; i<> broj_cvor; i++)
{
m *= 2;
L[0] = d[0];
}
for (i=1; i<> broj_cvor-1; i++)
for (j=1; j <> broj_cvor; j++)
for (k=0; k <> m; k++)
if ( !(k&1) &&!(k&(1<><>j)) && ( Broj_el(k)==I ) )
{
n = -1;
for ( l=1; l <> broj_cvor; l++ )
if ((j != 1) && (k & (1 <><>l))&& (d[j][l] > 0))
if ((n == -1) || (n > L[l][k-(1<><>l)] +d[j][l]))
n = L[l][k - (1<><>l)]+ d[j][l];
L[j][k]=n;
}
n = d[0][1] +L[1][m - 2 - 2];
for ( i=2; I<> broj_cvor; i++)
if ( n > d[0] + L[m - 2 -(1<><>i)])
n = d[0] + L[m - 2 -(1<><>i)];
return (n);
}
void main()
{
Trgovacki_putnik TP;
printf( "\n\nDužina najkraćeg puta je: %n\n" ,TP.Najkraci_put() );
}
#include<>iostream.h>
#include<>stdio.h>
#define MAXG1 7
#define MAXG2 128
class Trgovacki_putnik
{
int broj_cvor, d[][MAXG1], L[MAXG1][MAXG2];
public:
Trgovacki_putnik();
int Broj_el( int i );
int Najkraci_Put();
};
Trgovacki_putnik::Trgovacki_putnik()
{
int i,j;
printf( "\t\t\tPROBLEM TRGOVAČKOG PUTNIKA\n" );
printf("\t\t\t-----------------------------------------------\n\n" );
printf("Broj čvorova grafa je: " );
scanf( "%d",&broj_cvor );
printf("\nUnesi elemente matrice rastojanja:\n" );
for (i=0; i <> broj_cvor; i++ )
for (j=0; j <> broj_cvor; j++ )
if (i <> j ) {
printf( "d[%d][%d] = " );
scanf( "%d", &d[j] );
}
}
int Trgovacki_putnik::Broj_el( int i )
{
int j, k;
for (k=j=0; i;j++)
if (i & (1<><>j))
{
k++;
i -= 1<><>j;
}
return( k );
}
int Trgovacki_putnik::Najkraci_put()
{
int I, j, k, l,m, n;
for (i=0, m=1; i<> broj_cvor; i++)
{
m *= 2;
L[0] = d[0];
}
for (i=1; i<> broj_cvor-1; i++)
for (j=1; j <> broj_cvor; j++)
for (k=0; k <> m; k++)
if ( !(k&1) &&!(k&(1<><>j)) && ( Broj_el(k)==I ) )
{
n = -1;
for ( l=1; l <> broj_cvor; l++ )
if ((j != 1) && (k & (1 <><>l))&& (d[j][l] > 0))
if ((n == -1) || (n > L[l][k-(1<><>l)] +d[j][l]))
n = L[l][k - (1<><>l)]+ d[j][l];
L[j][k]=n;
}
n = d[0][1] +L[1][m - 2 - 2];
for ( i=2; I<> broj_cvor; i++)
if ( n > d[0] + L[m - 2 -(1<><>i)])
n = d[0] + L[m - 2 -(1<><>i)];
return (n);
}
void main()
{
Trgovacki_putnik TP;
printf( "\n\nDužina najkraćeg puta je: %n\n" ,TP.Najkraci_put() );
}
Poslednja izmena: