[ virtualx @ 01.07.2008. 13:30 ] @
imam za seminarski rad , napisati program za kule hanoja u c++.
kod sam nasao,malo proucio ,ali nisam skuzio bas najbolje,pa molim ako moze tko pomoci, da pojasni malo kod,i sta koja linija kod-a radi.

Code:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>

void KuleHanoja(int n, char lijevo, char desno, char srednje) {
  // oslobađa prvi stupac
  if (n > 1)
    KuleHanoja(n-1,lijevo,srednje,desno);
    cout << "Prenesi disk od " << lijevo << " do " << desno << '\n';

   //oslobađa drugi stupac
   if (n > 1) KuleHanoja(n-1,srednje,desno,lijevo);
}

int main() {
  int n,pot;
     cout << "\nKoliko zelite diskova?\n";
    cout<<"Broj diskova n= ";
    cin>>n;
    cout<<"Potrebno je uraditi slijedece: \n\n";
  //poziva se rekurzivna funkcija
  KuleHanoja(n,'1','3','2');
  //matematička formula rješavanja problema
  pot=pow(2,n)-1;
     cout<<"\t\t\nPotrebno je "<<pot<<" poteza da se prebace svi diskovi."<<endl;
    getch ();
  return 0;
}

[ kiklop74 @ 01.07.2008. 19:34 ] @
http://en.wikipedia.org/wiki/Tower_of_Hanoi
[ virtualx @ 02.07.2008. 00:11 ] @
ma znam sta je to, imam i igricu tower hanoi
problem je sto nerazumijem neke linije koda sta konkretno rade.
npr:

// oslobađa prvi stupac
if (n > 1)
KuleHanoja(n-1,lijevo,srednje,desno);
cout << "Prenesi disk od " << lijevo << " do " << desno << '\n';

//oslobađa drugi stupac
if (n > 1) KuleHanoja(n-1,srednje,desno,lijevo);

//poziva se rekurzivna funkcija
KuleHanoja(n,'1','3','2');
//matematička formula rješavanja problema
pot=pow(2,n)-1;


[ Iljo @ 06.07.2008. 23:19 ] @
Algoritam je dobar u programu, ali si popravi sintaksu (iostream.h, getch()???) i kompajliraj te pokreni program s nekoliko jednostavnih primjera. Ako ti onda nije nešt jasno javi.

Ideja algoritma je inače...
Znači trebaš prebacit n diskova sa lijevog štapa na desni koristeći srednji.
E sad ovo ti ide rekurzivno:
- prvo gornjih n-1 diskova sa lijevog štapa prebaci na srednji koristeći desni
- ostao ti je najveći disk na lijevom štapu, to je n-ti, prebaci ga direktno na desni
- sad onih n-1 diskova na srednjem štapu prebaci na desni štap koristeći lijevi štap
Ako je n=1 prebaci odma direkt sa lijevog na desni.

[ virtualx @ 13.08.2008. 19:00 ] @
moze li jos netko da malo objasni ovaj zadatak i te rekurzivne funkcije.