You are on page 1of 19

UTS Design Analisa Algoritma

(Praktikum)
CCS222 - DESAIN DAN ANALISA ALGORITMA - CR101

Daniel Hutajulu | 2018-0801-381 | FASILKOM IT


Rules :
1. Semua Perintah dikerjakan menggunakan Dev C++

2. Setiap Perintah yang di lakukan harap di screenshot dan di beri


penjelasan kemudian diletakkan ke dalam Ms. Word
3. File yang di kumpulkan dalam format .pdf dan .cpp dalam satu file .rar

(copas = nilai 0)

SOAL PRAKTIKUM 1 :

Buatlah program Menara Hanoi (The Tower of Hanoi), dengan jumlah


piringan di tentukan oleh user melalui keyboard.
Source code :

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string>

#include <limits>

#include <cstdlib>

#include <windows.h>

#include <unistd.h>

#include <dos.h>

#include <iomanip>

using namespace std;

int danielxyz(0);

PAGE 1
void Menara_Hanoi(int htzl, char x, char y, char z);

void Menara_Hanoi (int htzl, char x, char y, char z){

danielxyz++;

if(htzl==1){

cout << " | Pindah Bagian atas Disc dari " << x << " ke " << z << " |" <<
endl;

else{

Menara_Hanoi (htzl-1, x, z, y);

Menara_Hanoi (1 , x, y, z);

Menara_Hanoi (htzl-1, y, x, z);

int main (){

system ("color 0A");

int htzl;

cout << " ========================================" << endl;

PAGE 2
cout << " | >> PROGRAM THE TOWER OF HANOI << |" << endl;

cout << " ========================================" << endl;

cout << " | |" << endl;

cout << " | Masukan Jumlah Piringan = ";

cin >> htzl;

cout << " ========================================" << endl;

cout << endl;

Menara_Hanoi(htzl, 'A', 'B', 'C');

cout << " ========================================" << endl;

cout << endl;

cout << " $ Result menunjukan " << danielxyz << " kali perpindahan. \n" << endl;

cout << " ========================================" << endl;

cout << " | >> 20180801381 DANIEL HUTAJULU << |" << endl;

cout << " ========================================\n" << endl;

system("pause");

PAGE 3
Screenshot Output program Menara Hanoi :

Keterangan :

Program Hanoi merupakan sebuah program yang terinspirasi dari permainan


menara hanoi. Permainan menara hanoi merupakan sebuah permainan dengan
konsep mindah memindahkan beberapa piringan disk dari menara 1 ke menara
yang lain, tanpa merubah bentuk atau urutan dari disk tersebut. dalam permainan
menara hanoi terdapat 3 menara dan beberapa disk.

PAGE 4
Fungsi perintah void Menara_Hanoi();
Program Permainan Menara Hanoi ini dibuat menggunakan Rekursif ‘danielxyz++’
yang dapat kita lihat pada void hanoi.
Note:
variabel ‘htzl’ berfungsi untuk jumlah inputan pada keyboard;
variabel 'x' berperan sebagai tiang a;
variabel 'y' sebagai tiang b;
variabel 'z' berperan sebagai tiang c;

Fungsi perintah if(htzl==1){

Jika banyak piringan yang di inputkan = 1, maka : Piringan akan langsung dipindahkan
ke menara tujuan.

Jika tidak sama dengan 1 maka :


Pindahkan n-1 Disk yang lebih kecil dari A ke B,
Pindahkan Disk yang tersisa dari A ke C,
Pindahkan n-1 Disk dari B ke C;

PAGE 5
Program Menara_Hanoi pada fungsi main berfungsi untuk memanggil fungsi rekursif
dari Hanoi tersebut.

Perintah system ("color 0A"); untuk mengubah warna system console menjadi green

Perintah cin >> htzl; untuk menginput jumlah data dari keyboard dengan var htzl bertipe
data integer

Perintah Menara_Hanoi(htzl, 'A', 'B', 'C'); untuk memanggil fungsi hanoi yang diinputkan
keyboard lalu menampilkan output inisialisasi piringan disk yang berpindah A, B dan C

Perintah cout << " $ Result menunjukan " << danielxyz << " kali perpindahan. \n" <<
endl; untuk menampilkan hasil jumlah perpindahan yang terjadi tergantung jumlah
inputan pada keyboard

PAGE 6
SOAL PRAKTIKUM 2 :

Buatlah program untuk Memberikan Kembalian pada Vending Machine


yang menjual Air Mineral dengan Harga Rp. 5000,- per item.
Dengan syarat:
a. Membaca dan menerima uang
Rp. 5000,- Rp. 10.000,- Rp. 20.000,- Rp. 50.000,- dan Rp. 100.000,-
b. Menerima input jumlah item yang dibeli dan memeriksa uang yang
dimasukkan pembeli/user
c. Mesin akan menolak. Jika, jumlah yang di bayarkan kurang dari (<)
nominal transaksi.
d. Jika jumlah yang di bayar lebih besar (>), maka mesin akan
memberikan kembalian dengan nominal uang lembaran bernilai tinggi
sampai terendah.

Source code :

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string>

#include <limits>

#include <cstdlib>

#include <windows.h>

#include <unistd.h>

#include <dos.h>

#include <iomanip>

using namespace std;

int main(){

int A,B,C,D,E;

PAGE 7
char menu_pilihan,harga,mau_beli_lagi;

int cepe,gocap,duapuluhribu,ceban,goceng;

char jenis_minuman[20],merk[20];

int payment_bill,money,purchases,Product_prices,Total_prices;

dashboard:

cout<<"NAMA: DANIEL HUTAJULU"<<endl;

cout<<"NIM : 2018 - 0801 - 381"<<endl;

cout<<"===================================================="<<endl;

cout<<"| Program Sederhana Vending Machine |"<<endl;

cout<<"===================================================="<<endl;

cout<<"----------------------------------------------------"<<endl;

cout<<"DAFTAR MENU PILIHAN "<<endl;

cout<<"----------------------------------------------------"<<endl;

cout<<"[1] Air Mineral (AM)"<<endl;

cout<<"----------------------------------------------------"<<endl;

cout<<"Silahkan Input Pesanan Anda : ";

cin>>menu_pilihan;

cout<<"----------------------------------------------------"<<endl;

cout<<"Pilihan Tipe Air Kemasan (harga)"<<endl;

cout<<"----------------------------------------------------"<<endl;

cout<<"[1] Aqua Gelas Rp.5000/pcs"<<endl;

cout<<"----------------------------------------------------"<<endl;

PAGE 8
cout<<"Silahkan Input Pesanan Anda : ";

cin>>harga;

cout<<"Jumlah Pembelian : ";

cin>>purchases;

cout<<"----------------------------------------------------"<<endl;

switch(menu_pilihan)

case '1' :

strcpy(merk,"Air Mineral (AM) ");

break;

default:

strcpy(merk, "Input angka salah ");

break;

switch(harga)

default:

strcpy(jenis_minuman, "Aqua Gelas");

Product_prices=5000;

break;

PAGE 9
Total_prices=Product_prices*purchases;

cout<<"Jenis Pesanan : "<<merk<<endl;

cout<<"Tipe Air Kemasan : "<<jenis_minuman<<endl;

cout<<"Harga Satuan : Rp. "<<Product_prices<<endl;

cout<<"Jumlah Pembelian : "<<purchases<<endl;

cout<<"Total Harga : Rp. "<<Total_prices<<endl;

cout<<"----------------------------------------------------"<<endl;

cout<<"Total Bayar : Rp. ";

cin>>payment_bill;

if (payment_bill > Total_prices){

cout << "" << endl;

else if (payment_bill < Total_prices){

cout << "\nJumlah yang di bayarkan kurang dari nominal transaksi !!!\n" << endl;

system("pause");

goto dashboard;

else {

cout << endl;

PAGE 10
money=payment_bill-Total_prices;

cout<<"Uang Kembalian Anda : Rp. "<<money<<endl<<endl;

cout<<"===================================================="<<endl;

A=(money%100000);

cepe=(money-A)/100000;

B=(A%50000);

gocap=(A-B)/50000;

C=(B%20000);

duapuluhribu=(B-C)/20000;

D=(C%10000);

ceban=(C-D)/10000;

E=(D%5000);

goceng=(D-E)/5000;

printf("\n Jumlah Pecahan Rp. 100.000 \t : %d \n",cepe);

printf("\n Jumlah Pecahan Rp. 50.000 \t : %d \n",gocap);

printf("\n Jumlah Pecahan Rp. 20.000 \t : %d \n",duapuluhribu);

PAGE 11
printf("\n Jumlah Pecahan Rp. 10.000 \t : %d \n",ceban);

printf("\n Jumlah Pecahan Rp. 5.000 \t : %d \n",goceng);

printf("\n");

system("pause");

cout<<"===================================================="<<endl;

cout<<"Beli kembali produk? [Y/T] : ";cin>>mau_beli_lagi;

cout<<endl;

if(mau_beli_lagi=='Y'||mau_beli_lagi=='y')

goto dashboard;

else{

cout<<"Terima Kasih Sudah Menggunakan Program ini :)";

cout<<endl;

getch();

PAGE 12
Screenshot Output program Vending Machine :

Keterangan :

Perintah ini berfungsi untuk mendeklarasikan tipe data int dan char (karakter).

Perintah int A,B,C,D,E; merupakan inisialisasi dari perintah


int cepe,gocap,duapuluhribu,ceban,goceng; agar memudahkan saya untuk membuat
syntax pembanding/penghitung pada output kembalian apabila jumlah yang di bayarkan
lebih besar, maka mesin akan memberikan kembalian dengan nominal uang lembaran
bernilai tertinggi dahulu sampai terendah.

PAGE 13
Perintah ini berfungsi untuk menampilkan tampilan dasar (utama/dashboard) saat
program di running menggunakan compiler devc++ lalu meminta user untuk menginput
pesanan sesuai daftar menu pilihan.

Perintah ini berfungsi untuk memberikan pilihan keputusan pada user untuk memilih tipe
pesanan dan harga item yang akan di beli dengan menginputkan angka pesanan tsb.

PAGE 14
Perintah ini berfungsi untuk melakukan perulangan switch case “menu_pilihan” dan
“harga” pada jumlah data barang jualan vending machine, jika data vending machine
yang besar dan memuat banyak minuman perintah ini akan semakin sangat berguna.

Perintah ini berfungsi untuk melakukan proses perhitungan dengan rumus formula

Total_prices=Product_prices*purchases;

Kemudian memberikan user untuk menginput Total uang yang akan di bayarkan

cin>>payment_bill;

PAGE 15
Perintah ini berfungsi untuk membuat conditional if else jika uang yang diinput user:

*Mesin ini akan menolak apabila jumlah yang di bayarkan kurang dari nominal transaksi

*Apabila jumlah yang di bayarkan lebih besar, maka mesin akan memberikan
kembalian dengan nominal uang lembaran bernilai tertinggi dahulu sampai terendah

Perintah ini berfungsi untuk mencetak hasil perhitungan uang kembalian user dengan
rumus : money=payment_bill-Total_prices;

PAGE 16
Perintah ini berfungsi untuk menghitung jumlah pecahan mata uang yang akan di
kembalikan Vending Machine kepada user/customer dengan perbandingan dari mata
uang paling besar Rp.100.000,- sampai Rp.5.000,- berurutan dari atas sampai bawah

A=(money%100000); cepe=(money-A)/100000;
**setelah program menghitung berapa lembar uang kembalian seratus ribu maka lanjut
ke perintah berikutnya, dan berulang sampai berakhir di E.

B=(A%50000); gocap=(A-B)/50000;
C=(B%20000); duapuluhribu=(B-C)/20000;
D=(C%10000); ceban=(C-D)/10000;
E=(D%5000); goceng=(D-E)/5000;

PAGE 17
Perintah ini berfungsi untuk memberikan akses pilihan pada user untuk menggunakan
kembali program atau keluar dari program dengan inputan dari keyboard.

TERIMA KASIH

2018 – 0801 – 381

DANIEL HUTAJULU

PAGE 18

You might also like