h>
#include <string.h>
#include <unistd.h>
#include <windows.h>
#include <math.h>
float input();
void keluar();
void pilihan_ulang();
void hanoi_rekursif();
void hanoi_iteratif();
void metode_rekursif();
void metode_iteratif();
void menu_utama();
int main();
int langkah_rekursif = 0;
scanf("%[^\n]", &masukan);
fflush(stdin);
while(masukan[i] != '\0'){
if(masukan[0] == '.'){
salah = 1;
masukan[0] = '\0';
}else if(masukan[i]>='0' && masukan[i]<='9' || masukan[i] == '.'){
if((masukan[i] == '.') && (desimal == 1)){
titik = titik + 1;
if(titik > 1 || masukan[i+1] == '\0'){
salah = 1;
masukan[i] = '\0';
}
status = 1;
}else if((masukan[i] == '.') && (desimal == 0)){
salah = 1;
masukan[i] = '\0';
}
if(masukan[i]>='0' && masukan[i]<='9'){
if(status == 1){
isi_belakang = (isi_belakang * 10) + (masukan[i] - 48);
belakang = belakang + 1;
}else{
isi_depan = (isi_depan * 10) + (masukan[i] - 48);
}
}
i++;
}else{
salah = 1;
masukan[i] = '\0';
}
}
if(titik == 1){
hasil = (float)isi_depan + (isi_belakang / (pow(10, belakang)));
}else{
hasil = isi_depan;
}
if(salah == 1){
printf(" Masukkan salah! Masukkan angka yang benar : ");
return input(desimal);
}else if(hasil == 0){
printf(" Masukkan tidak boleh 0! Masukkan nilai yang benar :
");
return input(desimal);
}else{
return hasil;
}
}
void keluar(){
printf("\n Terima Kasih");
sleep(1);
printf(".");
system("cls");
system("exit");
}
void metode_rekursif(){
int jumlah;
printf(">>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("| PROGRAM MENARA HANOI |\n");
printf("| Metode Rekursif |\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" Masukan Jumlah Piringan : ");
jumlah = input(0);
printf("\n");
printf(" Perpindahan Piringan : \n");
langkah_rekursif = 0;
hanoi_rekursif(jumlah,'a','b','c');
printf("\n");
printf(" Total Langkah Minimum : %d\n", langkah_rekursif - 1);
printf(" ================================================== \n");
pilihan_ulang(1);
}
void metode_iteratif(){
int jumlah;
printf(">>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("| PROGRAM MENARA HANOI |\n");
printf("| Metode Iteratif |\n");
printf(">>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" Masukan Jumlah Piringan : ");
jumlah = input(0);
printf("\n");
printf(" Perpindahan Piringan : \n");
hanoi_iteratif(jumlah);
printf("\n");
printf(" Total Langkah Minimum : %d\n", (1 << jumlah) - 1);
printf(" ================================================== \n");
pilihan_ulang(2);
}
void menu_utama(){
int pilihan;
printf(" ================================================== \n");
printf("| PROGRAM MENARA HANOI |\n");
printf(" ================================================== \n");
printf("| Pilihan : |\n");
printf("| 1. Metode Rekursif |\n");
printf("| 2. Metode Iteratif |\n");
printf("| 3. Keluar |\n");
printf(" ================================================== \n");
printf(" Masukan Pilihan : ");
pilihan = input(0);
if(pilihan == 1){
system("cls");
metode_rekursif();
}else if (pilihan == 2){
system("cls");
metode_iteratif();
}else if (pilihan == 3){
keluar();
}else{
printf("\n");
printf(" Pilihan tidak ada\n");
printf(" Tekan apa saja untuk input ulang...");
getch();
system("cls");
menu_utama();
}
}
int main(){
system("cls");
menu_utama();
return 0;
}