Program Stack Tower Hanoi Dalam Bahasa C#

PROGRAM STACK TOWER HANOI DALAM BAHASA C#

15

Pada postingan sebelumnya sudah dijelaskan tentang STACK Dalam Bahasa C#, untuk kali ini kita akan membuat Program STACK Tower Hanoi dalam Bahasa C#.

Untuk praktiknya menggunakan aplikasi Devcpp.

DOWNLOAD DISINI : DEVCPP

//ylx-4.com/fullpage.php?section=General&pub=139976&ga=g

Misalkan saja contoh soalnya :

  1. Legenda di Hanoi, tentang kisah pendeta Budha bersama murid-muridnya: Bagaimana memindahkan seluruh piringan tersebut ke sebuah tiang yang lain (dari 1 ke 2); setiap kali hanya satu piringan yang boleh dipindahkan, tetapi tidak noleh ada piringan besar di atas piringan kecil. Ada tiang perantara 3. Tuliskan program untuk memindahkan piringan tersebut.

fe

Untuk membuat Tower Hanoi kita akan membuat 3 file header, yaitu :

  1. hanoi.h
  2. hanoi.c
  3. mhanoi.c

Ketiga file tersebut harus disave dalam 1 folder!

1. hanoi.h
/* File : Hanoi.h */
#ifndef HEADER_H
#define HEADER_H
#define Info(P)  (P)->Info
#define Next(P)  (P)->Next
#define Top(S)   (S).Top
#define Max(S)   (S).Max
#define Count(S) (S).Count
#define Nil NULL
#define bool unsigned short int
#define False 0
#define True  !False
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef int InfoType;
typedef struct tElmStack *Address;
typedef struct tElmStack {
InfoType Info;
Address  Next;
} ElmStack;
typedef struct {
Address Top;
int Count;
} Stack;
void CreateStack(Stack *S);
bool IsEmpty(Stack S);
Address Allocate(InfoType X);
void DeAllocate(Address P);
void Push(Stack *S, Address P);
void Pop(Stack *S, Address *P);
void ViewStack(Stack S);
void ViewVisual(Stack S[3], int TotalDisk);
#endif
2.hanoi.c
/* File : Hanoi.c */
#include “hanoi.h”
void CreateStack(Stack *S)
{
Top(*S) = Nil;
Count(*S) = 0;
}
bool IsEmpty(Stack S)
{
return Top(S) == Nil;
}
Address Allocate(InfoType X)
{
Address P = (Address)malloc(sizeof(ElmStack));
if (P != Nil)
{
Info(P) = X;
Next(P) = Nil;
}
return P;
}
void DeAllocate(Address P)
{
free(P);
}
void Push(Stack *S, Address P)
{
Next(P) = Top(*S);
Top(*S) = P;
Count(*S)++;
}
void Pop(Stack *S, Address *P)
{
*P = Top(*S);
Top(*S) = Next(*P);
Count(*S)–;
}
void ViewStack(Stack S)
{
Address P;
InfoType X[Count(S)];
int i = 0;
for (P = Top(S); P != Nil; P = Next(P))
{
X[i] = Info(P);
i++;
}
for (i = Count(S) – 1; i >= 0; i–)
printf(“%d “, X[i]);
}
void ViewVisual(Stack S[3], int TotalDisk)
{
int i, j, k;
Address P;
InfoType X[3][TotalDisk];
for (i = 0; i < 3; i++)
{
for (j = 0; j < TotalDisk – Count(S[i]); j++)
X[i][j] = 0;
for (P = Top(S[i]); P != Nil; P = Next(P))
{
X[i][j] = Info(P);
j++;
}
}
for (i = 0; i < TotalDisk; i++)
{
for (j = 0; j < 3; j++)
{
printf(” “);
if (X[j][i] == 0)
for (k = 0; k < 2 * TotalDisk – 1; k++)
printf(” “);
else
{
for (k = 0; k < TotalDisk – X[j][i]; k++)
printf(” “);
for (k = 0; k < 2 * X[j][i] – 1; k++)
printf(“=”);
for (k = 0; k < TotalDisk – X[j][i]; k++)
printf(” “);
}
}
printf(“n”);
}
for (i = 1; i <= 3; i++)
{
printf(” “);
for (j = 0; j < TotalDisk – 1; j++)
printf(” “);
printf(“%d”, i);
for (j = 0; j < TotalDisk – 1; j++)
printf(” “);
}
printf(“n”);
}
3. mhanoi.c
/* File : mhanoi.c */
#include “hanoi.h”
#include “hanoi.c”
int main()
{
int i;
int CMain, TotalDisk, MFrom, MTo, MCount;
Address P;
Stack Tower[3];
for (i = 0; i < 3; i++)
CreateStack(&Tower[i]);
do
{
system(“cls”);
printf(“=============================n”);
printf(” HANOI of Sugih Pamelan”);
printf(” 1. Mulain”);
printf(” 2. Kaluarn”);
printf(“=============================nn”);
printf(” Pilih 1 atawa 2: “);
scanf(“%d”, &CMain);
switch (CMain)
{
case 1:
do
{
system(“cls”);
printf(“================n”);
printf(“Mulain”);
printf(” Jumlah Piringan: “);
scanf(“%d”, &TotalDisk);
if (TotalDisk <= 0)
{
printf(“n Salah input, tingal deui.n”);
getch();
}
}
while (TotalDisk <= 0);
for (i = 0; i < TotalDisk; i++)
Push(&Tower[0], Allocate(TotalDisk – i));
MCount = 0;
do
{
system(“cls”);
printf(“******** PROGRAM TOWER HANOI sugihpamela.pe.hu ******** n”);
for (i = 0; i < 3; i++)
{
printf(“n Tower %d: “, i + 1);
ViewStack(Tower[i]);
}
printf(“nn”);
ViewVisual(Tower, TotalDisk);
printf(“nn Total mindahkeun: %dnn”, MCount);
printf(“n Pindah tina : “);
scanf(“%d”, &MFrom);
printf(“n  Kana   : “);
scanf(“%d”, &MTo);
MFrom–;
MTo–;
if (MFrom >= 0 && MFrom <= 2 && MTo >= 0 && MTo <= 2)
{
if (!IsEmpty(Tower[MFrom]))
{
if (IsEmpty(Tower[MTo]))
{
Pop(&Tower[MFrom], &P);
Push(&Tower[MTo], P);
MCount++;
}
else if (Info(Top(Tower[MTo])) > Info(Top(Tower[MFrom])))
{
Pop(&Tower[MFrom], &P);
Push(&Tower[MTo], P);
MCount++;
}
else
{
printf(“n Salah input, tingal deui.n”);
getch();
}
}
else
{
printf(“n Salah input, tingal deui.n”);
getch();
}
}
else
{
printf(“n Salah input, tingal deui.n”);
getch();
}
}
while (Count(Tower[1]) != TotalDisk && Count(Tower[2]) != TotalDisk);
system(“cls”);
for (i = 0; i < 3; i++)
{
printf(“n Tower %d: “, i + 1);
ViewStack(Tower[i]);
}
printf(“nn”);
ViewVisual(Tower, TotalDisk);
printf(“nn Total mindahkeun: %dn”, MCount);
printf(“n Hebat eung =D!n”);
getch();
while (!IsEmpty(Tower[1]))
{
Pop(&Tower[1], &P);
DeAllocate(P);
}
while (!IsEmpty(Tower[2]))
{
Pop(&Tower[2], &P);
DeAllocate(P);
}
break;
case 2:
printf(“n Nuhun tos maen🙂.n”);
getch();
break;
default:
printf(“n Salah input, tingal deui.n”);
getch();
}
}
while (CMain != 2);
return 0;
}

Setelah ketiga file tersebut dalam 1 folder, selanjutnya lakukan compile & run pada file mhanoi.c, karena file ini merupakan sebuah main program untuk menjalankan program tersebut.

Hasil

4

Jika programnya tidak jalan, kemungkinannya tanda kutipnya error, karena beda font, atau bisa langsung saja download programnya.

DISINI

//ylx-4.com/fullpage.php?section=General&pub=139976&ga=g

Semoga Bermanfaat🙂

key :
Program Menara Hanoi Dalam Bahasa C#
Program Tower Hanoi Dalam Bahasa C#
Program STACK Dalam Bahasa C#
Membuat Program STACK Dalam Bahasa C#

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s