Jumat, 04 April 2014

Sourcecode tower of hanoi menggunakan C++

Teman-teman sudah adakah yang tau dengan tower of hanoi yaitu metode memindahkan stack dengan cara stack yg lebih kecil harus berada d stack yg lebih besar.
berikut sourcecode contoh tentang pembuatan tower menggunakan C++ silahkan dicoba dirumah masing-masing :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>

int initialize(int arr1[],int x[]);
void print(int arr1[],int arr2[],int arr3[],int x[]);
void Hanoi(int arr1[],int arr2[],int arr3[],int x[],int n,char asal,char bantu,char tujuan);

int main()
{
int n;
int arr1[10],
arr2[10],
arr3[10],
x[3] = {0,0,0};

n = initialize(arr1,x);
print(arr1,arr2,arr3,x);
Hanoi(arr1,arr2,arr3,x,n,'A','B','C');
getch();
return 0;
}

int initialize(int arr1[],int x[]){
int n;
while (true){
system("cls");
printf("\n\n     - - - [TOWER OF HANOI] - - - \n\n");
printf(" Masukkan Jumlah Kepingan : ");
if (scanf("%d",&n) == 1 ) break;
fflush(stdin);
}
puts("");
for (int i=n;i>=1;i--){
arr1[x[0]++] = i;
}
return n;
}

void print(int arr1[],int arr2[],int arr3[],int x[]){
int i,
j = 0;
for (j=0;j<3;j++){
if (j == 0)printf("A : ");
if (j == 1)printf("B : ");
if (j == 2)printf("C : ");
for (i=0;i<x[j];i++){
if (j == 0) printf("%3d",arr1[i]);
if (j == 1) printf("%3d",arr2[i]);
if (j == 2) printf("%3d",arr3[i]);
}
printf("\n");
}
printf("\n");
}


void Hanoi(int arr1[],int arr2[],int arr3[],int x[],int n,char asal,char bantu,char tujuan)
{

if (n == 0) return;
Hanoi(arr1,arr2,arr3,x,n-1,asal,tujuan,bantu);

printf("--- Memindahkan kepingan ke-%d dari %c ke %c ---\n\n",n,asal,tujuan);
x[asal-65] -= 1;
switch (tujuan){
case 'A' :
arr1[x[0]++] = n;
break;
case 'B' :
arr2[x[1]++] = n;
break;
case 'C' :
arr3[x[2]++] = n;
break;
}
print(arr1,arr2,arr3,x);
Sleep(1000);
Hanoi(arr1,arr2,arr3,x,n-1,bantu,asal,tujuan);
}

Tidak ada komentar:

Posting Komentar