Program ini adalah program yang saya buat sebagai latihan pra-UAS mata kuliah Algoritma Pemrograman.
Pada UAS nanti saya akan membuat program sederhana, yaitu program konversi bilangan.
Ini adalah lanjutan dari tutorial saya sebelumnya, yaitu C++: Program Konversi Bilangan - Desimal Biner Oktal Heksadesimal (Part 1). Pada tutorial sebelumnya terdapat banyak pengulangan kode program sehingga pada tutorial kali ini, penulisan kode lebih dioptimalisasi. :D
1.
Langsung aja, buka Microsoft Visual Studio (karena saya menggunakan
Microsoft Visual Studio, tapi teman-teman bisa menggunakan code editor
lain seperti Borland C++).
2. Buat project baru, saya beri nama projectnya konversi_bilangan_2, pilih WIN32 Console Application.
3. Masukkan code berikut :
// konversi_bilangan_2.cpp : Defines the entry point for the console application.
// Developer : Erik Gunawan
// Nickname : EXz
#include "stdafx.h"
#include <iostream>
using namespace std;
void pilihan();
void header() {
cout << "Program Konversi Bilangan" << endl;
cout << "=============================================" << endl;
cout << "A = Desimal ke Biner, Oktal, Heksadesimal " << endl;
cout << "B = Biner ke Desimal, Oktal, Heksadesimal " << endl;
cout << "C = Oktal ke Desimal, Biner, Heksadesimal " << endl;
cout << "D = Heksadesimal ke Desimal, Biner, Oktal " << endl;
cout << "=============================================" << endl;
cout << endl;
}
int hasil[100];
int bil;
int sisa = 0;
int x = 0;
int fromDecimal(int desimal, int kode) {
for (int i=desimal; i>0; i/=kode) {
sisa = i % kode;
x += 1;
hasil[x] = sisa;
}
if (kode==2) {
cout << "Hasil biner : ";
}
else if (kode==8) {
cout << "Hasil oktal : ";
}
else if (kode==16) {
cout << "Hasil heksadesimal : ";
}
while (x) {
if (kode==2 || kode==8) {
cout << hasil[x];
}
else if (kode==16) {
switch (hasil[x]) {
case 10 : cout << 'A'; break;
case 11 : cout << 'B'; break;
case 12 : cout << 'C'; break;
case 13 : cout << 'D'; break;
case 14 : cout << 'E'; break;
case 15 : cout << 'F'; break;
default : cout << hasil[x]; break;
}
}
x -= 1;
}
cout << endl;
return 0;
}
char bil_hexa[100];
void toDecimal(int kode) {
int pangkat = 1;
int hasil_desimal = 0;
int desimal = 0;
int index = 0;
int a, b, c, length;
if (kode==2 || kode==8) {
for (int i=bil; i>0; i/=10) {
sisa = i % 10;
hasil_desimal += pangkat * sisa;
pangkat *= kode;
}
cout << "Hasil desimal : " << hasil_desimal << endl;
if (kode==2) {
fromDecimal(hasil_desimal,8);
fromDecimal(hasil_desimal,16);
}
else if (kode==8) {
fromDecimal(hasil_desimal,2);
fromDecimal(hasil_desimal,16);
}
}
if (kode==16) {
length = strlen(bil_hexa);
for (int i=length-1; i>=0; i--) {
a = bil_hexa[index];
switch (a) {
case 'A' :
case 'B' :
case 'C' :
case 'D' :
case 'E' :
case 'F' : b = a-55; break;
default : b = a-48; break;
}
c = i;
while (c>=0) {
desimal = pangkat*b;
pangkat *= 16;
c -= 1;
}
pangkat = 1;
hasil_desimal += desimal;
index += 1;
}
cout << "Hasil desimal : " << hasil_desimal << endl;
fromDecimal(hasil_desimal,2);
fromDecimal(hasil_desimal,8);
}
}
void decimalToAll() {
cout << "Masukkan bilangan desimal : "; cin >> bil;
fromDecimal(bil,2);
fromDecimal(bil,8);
fromDecimal(bil,16);
}
void binaryToAll() {
cout << "Masukkan bilangan biner : "; cin >> bil;
toDecimal(2);
}
void octalToAll() {
cout << "Masukkan bilangan oktal : "; cin >> bil;
toDecimal(8);
}
void hexaToAll() {
cout << "Masukkan bilangan hexadesimal : "; cin >> bil_hexa;
toDecimal(16);
}
void pesan_salah() {
system("cls");
cout << "Kode yang Anda masukkan salah!!" << endl;
cout << endl;
}
void pilihan() {
char pilih, coba_lagi;
pilih:
header();
cout << "Masukkan Pilihan : "; cin >> pilih;
cout << endl;
if (pilih=='a' || pilih=='A') {
decimalToAll();
}
else if (pilih=='b' || pilih=='B') {
binaryToAll();
}
else if (pilih=='c' || pilih=='C') {
octalToAll();
}
else if (pilih=='d' || pilih=='D') {
hexaToAll();
}
else {
pesan_salah();
goto pilih;
}
coba:
cout << endl;
cout << "Ingin coba lagi (Y/N) ? "; cin >> coba_lagi;
if (coba_lagi=='Y' || coba_lagi=='y') {
system("cls");
goto pilih;
}
else if (coba_lagi=='N' || coba_lagi=='n') {
_exit(0);
}
else {
pesan_salah();
goto coba;
}
}
void main(){
pilihan();
}
4. Run file, hasilnya akan seperti ini :5. Masukkan bilangan yang ingin dicari.
Program ini masih banyak kekurangannya, jadi mohon maaf. :D
Untuk download contoh project di atas, klik disini atau konversi_bilangan_2.
Ditunggu kritik saran pertanyaan dan komentarnya. :D
Semoga bermanfaat.







0 komentar:
Post a Comment