24.2.3.24011230. Prepraviti program za rješavanje problema Hanojskih kula rađen na vježbama tako da se ispred svakog poteza ispisuje redni broj poteza. Drugim riječima, ispis treba da izgleda poput sljedećeg:
1. potez: Prebaci disk sa štapa 1 na štap 3
2. potez: Prebaci disk sa štapa 1 na štap 2
3. potez: Prebaci disk sa štapa 3 na štap 2
itd. Pri tome, program ne smije da koristi niti globalne niti statičke promjenljive. Pored toga, funkcija “Hanoi” koja obavlja glavninu zadatka treba da se iz glavnog programa poziva samo sa jednim stvarnim argumentom – brojem kula. Uputa: razmotrite mogućnost da funkcija “Hanoi” vraća vrijednost (koja će biti iskorištena samo u nekim slučajevima).
Opis rješenja:
Listing programa:
#include <iostream>
#include <conio.h>
using namespace std;
int Hanoi(int n,int x=1,int y=2,int z=3,int k=1){
if(n!=0){
k=Hanoi(n-1,x,z,y,k);
cout<<k++<<" .korak: ";
cout<<"Prebaci disk sa stapa "<<x<<" na stap "<<y<<endl;
k=Hanoi(n-1,z,y,x,k);
}
return k;
}
int main(){
int br;
cin>>br;
Hanoi(br);
getch();
return 0;
}
Izvođenje programa:
Riješeni zadaci 2 Index
|
|