02 Maret usep sofyan
konversi bilangan desimal ke biner, oktal dan heksa menggunakan stack
#include
#include
using namespace std;
// deklarasi struct stack
int MAXSTACK, MAXSTACK2, MAXSTACK3;
typedef int itemtype;
typedef struct {
itemtype item[300];
int count;
} stack;
// fungsi inisialsiasi stack
void initializestack(stack *s) { s->count = 0; }
// fungsi untuk mengecek stack yg kosong
int empty(stack *s) { return (s->count == 0); }
// fungsi untuk mengecek stack yang penuh
int full(stack *s) { return (s->count == MAXSTACK); }
// fungsi push untuk memasukan data baru ke dalam stack
void push(itemtype x, stack *s) {
if (full(s))
cout << "stack penuh !" << endl;
else {
s->item[s->count] = x;
++(s->count);
}
}
// fungsi untuk mengambil data baru dalam stack
int pop(stack *s) {
if (empty(s))
cout << "stack kosong" << endl;
else {
--(s->count);
return (s->item[s->count]);
}
}
// fungsi utama
main() {
int i, n, m, l, z;
int input;
// inisialisasi stack biner, oktal, dan heksa
stack biner;
stack oktal;
stack heksa;
// menginisialisasikan sebuah stack
initializestack(&biner);
initializestack(&oktal);
initializestack(&heksa);
cout << "bilangan desimal = "; // meminta user memasukan data bilangan desimal
cin >> input; // menginput bil desimal ke dalam variabel input
// perulangan atau loop untuk menentukan nilai max dari stack
for (z = 1, n = input; n > 0; n = n / 2, z++) {
MAXSTACK = z;
}
for (z = 1, n = input; n > 0; n = n / 8, z++) {
MAXSTACK2 = z;
}
for (z = 1, n = input; n > 0; n = n / 16, z++) {
MAXSTACK3 = z;
}
m = 0;
for (n = input; n > 0; n = n / 2) {
l = n % 2; // mecari data sisa
push(l, &biner); // push data reminder(sisa) ke dalam stack biner
++m;
}
m = 0;
for (n = input; n > 0; n = n / 8) {
l = n % 8; // mecari data sisa
push(l, &oktal); // push data reminder(sisa) ke dalam stack oktal
++m;
}
m = 0;
for (n = input; n > 0; n = n / 16) {
l = n % 16; // mecari data sisa
push(l, &heksa); // push data reminder(sisa) ke dalam stack heksa
++m;
}
cout << "bilangan Biner = "; // print hasil dalam bilangan biner
for (i = MAXSTACK; i > 0; i--) {
cout << pop(&biner); // perulangan untuk mencetak data biner
}
cout << endl;
cout << "bilangan Oktal = ";
for (int i = MAXSTACK2; i > 0; i--) {
cout << pop(&oktal); //mencetak bilangan oktal
}
cout << endl;
cout << "bilangan Heksa = ";
for (int i = MAXSTACK3; i > 0; i--) {
int p = pop(&heksa); //mencetak bilangan heksa dengan syarat tertentu
if (p <= 9)
printf("%d", p);
else if (p == 10)
printf("A");
else if (p == 11)
printf("B");
else if (p == 12)
printf("C");
else if (p == 13)
printf("D");
else if (p == 14)
printf("E");
else if (p == 15)
printf("F");
}
getch();
}
by : www.mochammadfarkhan.com
0 komentar:
Posting Komentar