Prevod koda napisanog u C++ na Bejzik

Prevod koda napisanog u C++ na Bejzik

offline
  • Miroslav R. Maričić
  • diplomirani inženjer mašinstva, profesor
  • Pridružio: 06 Jun 2012
  • Poruke: 229
  • Gde živiš: Hajdučica, Banat, Srbija

Napisano: 10 Nov 2012 22:03

Пронашао сам листинг програма за познати задатак трговачког путника, а који је на писан на С++. Пошто тај језик не познајем, може ли неко да ми преведе ове делове кода на Бејзик, или Клипер Wink .

Ево тих делова кода:
..................................... (Први део)
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

Зар баш неће нико да ми помогне??? Sad 'Ајде ми бар преведите на Бејзик ове 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)]

Са оваквим деловима кода се нисам досад сусрео...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Ne bih rekao da neće. Više je u pitanju ogroman posao. C++ se u poslednjih 14 godina dosta promenio i moderni kompajleri više ni ne podržavaju takvu C-oliku sintaksu. Ljudima koji su u poslednjih 5-10 godina učili C++ će taj program izgledati vrlo čudno. Pored toga za prevođenje je potrebno i poznavanje nekog dijalekta basica. Ovde imate i dodatnu problematiku u tome što nisu svi basic interpreteri/kompajleri objektno-orijentisani. Oni koji jesu često implementiraju OOP na različite načine. Čak bi i implementacija multidimenzionalnih array-a mogla biti različita. A često klasičnije implementacije nemaju "bitwise" operator. Ako koristite funkcionalni basic interpreter/kompajler morali bi i da raščlanite klasu i konvertujete kod u kojima se koriste metodi i osobine klase u funkcionalni kod.

Elem, čak ni te četiri linije nije moguće prevesti jer operator '<>' ne postoji u C++. To je najverovatnije greška u prepisivanju ili skeniranju teksta.

Uz kratko upoznavanje sa C sintaksom, operatorima u C-u, osnovnim funkcijama za unos i prikaz podataka u C-u, a zatim sa osnovnim pojmom klasa u C++, verujem da vam prevod neće biti problem.



offline
  • Miroslav R. Maričić
  • diplomirani inženjer mašinstva, profesor
  • Pridružio: 06 Jun 2012
  • Poruke: 229
  • Gde živiš: Hajdučica, Banat, Srbija

Хвала на исцрпном одговору! Пошто сам некад давно програмирао на "обичном" MS C 6.0, снашао бих се некако са овим С++. Али, онај оператор "<><>" ме мучи... Папир који ја имам није скениран, већ фотокопиран из "Рачунара". Папир је испред мене и лепо видим тај чудни оператор "<><>". Јавља се на више места у коду. Вероватно је погрешно откуцан у самим "Рачунарима" (мада ме буни, пошто се појављује више пута). Покушаћу да проценим по некој логици шта би требало да буде уместо "<><>". Smile
Позз!

offline
  • Pridružio: 26 Avg 2010
  • Poruke: 10622
  • Gde živiš: Hypnos Control Room, Tokyo Metropolitan Government Building

miroslav.maričić ::Хвала на исцрпном одговору! Пошто сам некад давно програмирао на "обичном" MS C 6.0, снашао бих се некако са овим С++. Али, онај оператор "<><>" ме мучи... Папир који ја имам није скениран, већ фотокопиран из "Рачунара". Папир је испред мене и лепо видим тај чудни оператор "<><>". Јавља се на више места у коду. Вероватно је погрешно откуцан у самим "Рачунарима" (мада ме буни, пошто се појављује више пута). Покушаћу да проценим по некој логици шта би требало да буде уместо "<><>". Smile
Позз!


<> u paskalu znači različito. U C/C++ njegov ekvivalent je "!=".

Ko je trenutno na forumu
 

Ukupno su 926 korisnika na forumu :: 50 registrovanih, 6 sakrivenih i 870 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, A.R.Chafee.Jr., aleksmajstor, anbeast, babaroga, bankulen, Bloody, Bobrock1, bokisha253, Boris90, BORUTUS, dehhhhi, dekan.m, Dimitrise93, DragoslavS, FileFinder, Frunze, Georgius, goxin, HrcAk47, hyla, ILGromovnik, kolle.the.kid, Koridor, Kubovac, kybonacci, laki_bb, Marko Marković, MB120mm, mercedesamg, milenko crazy north, Milometer, MiroslavD, MrNo, pacika, powSrb, procesor, S1Mk3, slonic_tonic, Smajser, Stoilkovic, TheBeastOfMG, theNedjeljko, Trpe Grozni, YU-UKI, Zeks, zillbg, Zoca, zziko, |_MeD_|