#include #include #define MAX 100 /* push // thêm ptử pop // xóa ptử đầu tiên và đưa nó ra ngoài _isEmpty // ktra stack rỗng getTop// lấy giá trị đầu tiên _isFull // kiểm tra stack đã đầy hay chưa */ int _isEmpty(int top) { return(top<0); } int _isFull(int top) { return (top>MAX); } void push(int data, int stack[], int *top) { if(_isFull(*top)) { printf("Da Full Stack"); return; } else { (*top)++; stack[*top]=data; } } void pop(int stack[], int *top, int *val) { if(!_isEmpty(*top)) { *val = stack[*top]; (*top)--; } } void Chuyen_co_so(int stack[], int *top, int coso, int number) { int temp; while(number>0) { temp= number%coso; push(temp,stack,top); number /= coso; } } void InStack(int stack[], int *top) { while(!_isEmpty(*top)) { int val; pop(stack,top,&val); if(val<10) { printf("%d",val); } else { switch(val) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; } } } } int main() { int stack[MAX]; int top=-1; int n, coso; printf("Nhap so he 10: "); scanf("%d",&n); printf("Nhap co so muon chuyen: "); scanf("%d",&coso); Chuyen_co_so(stack,&top,coso ,n); InStack(stack,&top); return 0; }