MauLop

/*
Ứng dụng ngăn xếp lưu trữ kế tiếp chuyển số nguyên dương
hệ 10 sang hệ 2 và 16. Yêu cầu sử dụng mẫu lớp
trong cài đặt.
*/
#include<iostream>
#include<stdio.h>

using namespace std;

//Khai bao mau lop doi tuong ngan xep
template <class Type>
class Stack
{
    private:
        enum {size=32};
        Type S[size];
        int T;
    
    public:
        Stack();
        void push(Type x);
        Type pop();
        bool isEmpty();
};

//===chuong trinh chinh===
int main()
{
    //Tao 1 doi tuong ngan xep co phan tu la so nguyen
    Stack<int> s1;
    //Tao 1 doi tuong ngan xep co phan tu la ky tu
    Stack<char> s2;
    
    //Khai bao bien
    int n,thuong,du;
    
    cout<<"Chuong trinh chuyen so nguyen duong n sang so nhi phan va so hex";
    cout<<"\n\nNhap vao so nguyen duong n= ";
    cin>>n;
    
    //Chuyen n sang he 2
    thuong=n;
    while(thuong)
    {
        du = thuong%2;
        thuong /= 2;
        s1.push(du);
    }
    
    cout<<"So nhi phan cua "<<n<<" la: ";
    while(!s1.isEmpty()) cout<<s1.pop();

    //Chuyen n sang he 16
    thuong=n;
    while(thuong)
    {
        du = thuong%16;
        thuong /= 16;
        
        if(du<10) s2.push(du+48);
        else s2.push(du+55);
    }
    
    cout<<"\nSo hex cua "<<n<<" la: ";
    while(!s2.isEmpty()) cout<<s2.pop();
    
    cout<<endl;
    return 0;
}
//===dinh nghia ham===
template <class Type>
Stack<Type>::Stack():T(-1)
{
    
}

template <class Type>
void Stack<Type>::push(Type x)
{
    //1.Kiem tra ngan xep day
    if(T==size-1)
    {
        cout<<"Ngan xep da day!";
        return;
    }
    
    //2-3.Tang T len 1 va dua x vao ngan xep tai vi tri T
    S[++T] = x;
}

template <class Type>
Type Stack<Type>::pop()
{
    //1.Kiem tra ngan xep rong
    if(T==-1)
    {
        Type tg;
        cout<<"Ngan xep da rong!";
        return tg;
    }
    
    //2-3-4.Tra ve phan tu dinh va giam T di 1
    return S[T--];
}

template <class Type>
bool Stack<Type>::isEmpty()
{
    return T==-1;
}

Last updated