|
Napisano: 10 Nov 2012 22:03
Пронашао сам листинг програма за познати задатак трговачког путника, а који је на писан на С++. Пошто тај језик не познајем, може ли неко да ми преведе ове делове кода на Бејзик, или Клипер .
Ево тих делова кода:
..................................... (Први део)
for (k=j=0; i; j++)
if (i & (1<><>j))
{
k++;
i -= 1<><>j;
}
……………………………………
......................................(Други део)
for (i=0, m=1; i <> broj_cvor; i++)
{
m *= 2;
L[i][0] = d[i][0];
}
…………………………………….
......................................(Трећи део)
{
int I, j, k, l, m, n;
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][i] + L[i][m - 2 - (1<><>i)])
n = d[0][i] + L[i][m - 2 - (1<><>i)];
return (n);
}
......................................
Dopuna: 11 Nov 2012 23:44
Ево и комплетног кода који је објављен у часопису "Рачунари", јуна 1998. године:
#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[i][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[i][0] = d[i][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][i] + L[i][m - 2 - (1<><>i)])
n = d[0][i] + L[i][m - 2 - (1<><>i)];
return (n);
}
void main()
{
Trgovacki_putnik TP;
printf( "\n\nDužina najkraćeg puta je: %n\n" , TP.Najkraci_put() );
}
Dopuna: 12 Nov 2012 15:27
Зар баш неће нико да ми помогне??? 'Ајде ми бар преведите на Бејзик ове 4 линије кода:
а) if ((j != 1) && (k & (1 <><>l)) && (d[j][l] > 0))
б) if ((n == -1) || (n > L[l][k-(1<><>l)] + d[j][l]))
в) if ( !(k&1) && !(k&(1<><>j)) && ( Broj_el(k)==i ) )
г) n = d[0][i] + L[i][m - 2 - (1<><>i)]
Са оваквим деловима кода се нисам досад сусрео...
|