Seputar IT dan Kajian Islam

Senin, 02 Maret 2020

stack


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