Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Kule hanoja

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Kule hanoja

[ Pregleda: 5034 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
91.191.20.*

ICQ: 11


+4 Profil

icon [Zadatak] Kule hanoja01.07.2008. u 13:30 - pre 192 meseci
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;
}


 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: [Zadatak] Kule hanoja01.07.2008. u 19:34 - pre 192 meseci
http://en.wikipedia.org/wiki/Tower_of_Hanoi
Tko leti vrijedi
 
Odgovor na temu

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
91.191.20.*

ICQ: 11


+4 Profil

icon Re: [Zadatak] Kule hanoja02.07.2008. u 00:11 - pre 192 meseci
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;



 
Odgovor na temu

Iljo
Marko Ilić
Varazdin-Zagreb

Član broj: 65402
Poruke: 35
*.adsl.net.t-com.hr.



Profil

icon Re: [Zadatak] Kule hanoja06.07.2008. u 23:19 - pre 192 meseci
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.

 
Odgovor na temu

virtualx
bihać - BIH

Član broj: 5930
Poruke: 3383
91.191.20.*

ICQ: 11


+4 Profil

icon Re: [Zadatak] Kule hanoja13.08.2008. u 19:00 - pre 190 meseci
moze li jos netko da malo objasni ovaj zadatak i te rekurzivne funkcije.

 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Kule hanoja

[ Pregleda: 5034 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.