Konversi bilangan basis 10 menjadi basis 2 (biner) :
#include <conio.h>
#include <iostream.h>
#include <string.h>
#define MAX_STACK 20
typedef struct {
int top;
int data[20];
} Stack;
void inisialisasi (Stack &s) {
s.top = -1;
}
int isFull (Stack &s) {
int temp = MAX_STACK - 1;
if (s.top == temp) return 1;
else return 0;
}
int isEmpty(Stack &s) {
if (s.top == -1) return 1;
else return 0;
}
void push(Stack &s, int h) {
if (isFull(s) == 0) {
s.top++;
s.data[s.top] = h;
}
}
int pop(Stack &s) {
int i;
if (isEmpty(s) == 0 ) {
i = s.data[s.top];
s.data[s.top]= 0;
s.top--;
}
return i;
}
int peek(Stack &s) {
return s.data[s.top];
}
// ini adalah fungsi untuk konversi integer menjadi string ...
string IntToString(int intValue) {
char *myBuff;
string strRetVal;
myBuff = new char[100]; // Create a new char array
memset(myBuff,'\0',100); // Set it to empty
itoa(intValue,myBuff,10); // Convert to string
strRetVal = myBuff; // Copy the buffer into the string object
delete[] myBuff; // Delete the buffer
return(strRetVal);
}string convert(int n) {
int sisa;
string str;
Stack s;
inisialisasi(s);
while (n != 0) {sisa = n % 2;
cout << n << " / 2 = ";
push(s, sisa);
n = n / 2;
cout << n << " sisa " << sisa << "; " << sisa << " di-push ke stack ..." << endl;
}
cout << endl << "Konversi ke biner : " << endl;
while (!isEmpty(s)) {
int n2 = pop(s);
cout << n2 << " dipop dari stack .. ---> ";
str = str + IntToString(n2);
cout << str << endl;
}
cout << endl;
return str;
}
void main(){
int number;
clrscr();cout << "Masukkan sebuah bilangan integer : "; cin >> number;
cout << endl;
string str = convert(number);
cout << number << " dalam biner adalah " << str << endl;
}
Hasilnya (output) :
No comments:
Post a Comment