C++ Program to Convert Decimal to Binary Using Stack

Today I’m going to explain that how you can convert decimal to binary using stack class in c++. Logic is clear, first, we’ll divide the decimal by 2 and remainder is pushed onto stack and our new decimal will be decimal/2. This is carried out until the decimal becomes 0. Then we’ll pop all remainders into a integer array and display it on the screen. Let’s see codes below;

I’ve stack header file and .cpp file;

Stack.h:

#ifndef STACK_H
#define STACK_H

class Stack
{
public:
	Stack(int size);
	virtual ~Stack();

	bool Pop(int *pData);
	bool Push(int data);
	bool IsFull();
	bool IsEmpty();
	bool Peek(int *pData);

private:
	int m_capacity;
	int m_size;
	int *m_pData;

};

#endif

Stack.cpp:

#include "Stack.h"
#include iostream

using namespace std;

Stack::Stack(int size)
:m_capacity(size),
m_size(0)
{
	m_pData = new int[size];
}

Stack::~Stack()
{
	delete[] m_pData;
}

bool Stack::IsEmpty()
{
	if (m_size == 0)
		return true;
	else
		return false;
}
bool Stack::IsFull()
{
	if (m_size == m_capacity)
		return true;
	else
		return false;
}

bool Stack::Push(int data)
{
	if (IsFull())
		return false;
	else{
		m_pData[m_size] = data;
		m_size++;
		return true;
	}

}

bool Stack::Pop(int* pData)
{
	if (IsEmpty())
		return false;
	else{
		*pData = m_pData[m_size - 1];
		m_size--;
		return true;
	}
}

bool Stack::Peek(int* pData)
{
	if (IsEmpty())
		return false;
	else{
		*pData = m_pData[m_size - 1];
		return true;
	}
}

Now, in my main.cpp I’ll make the convert.

Okumaya devam et

Reklamlar

C++ This

Bu yazımda sizlere c++’ta this ‘i olabildiğince basit ve anlaşılır şekilde anlatacağım. Bir sınıftan birçok nesne oluşturabiliriz, ve oluşturduğumuz nesnelerin herbirinin kullanmak istediği değişkenlere ayrı birer adres verilir. Örnek olarak, diyelim ki elimizde Math sınıfı var.  Değişkenleri de m_x ve m_y olsun. Hemen bir parametreli constructor yazalım işi zorlaştırmayalım;

Math::Math(int x, int y)
:m_x(x), m_y(y)
{
//Constructor.
}

Aldığım parametreleri direkt değişkenlerime atıyorum.  Daha da uzatmadan neler olacak görmek için iki tane nesne tanımlayalım.

Math math(3,5);
Math math2(2,9);

Bu sınıfa print fonksiyonu yazıp değerleri yazdırdığınızda iki nesne içinde farklı değerler çıkacak.(math için 3 ve 5. math2 için 2 ve 9). Burada göstermek istediğim şey her nesne için aynı değişken adresi kullanılsaydı kullandığımız fonksiyonların durumuna göre işler karışacaktı. Bu yüzden aslında biz görmesekte bir şekilde nesnenin adresi parametreymiş gibi çağırdığımız fonksiyonlara aktarılır. Böylece her nesne için aslında farklı değişkenler oluşturulmuş olur.

c++ thisc++ this

Sınıfın herhangi bir fonksiyonunun içine this-> yazdığımızda o sınıftaki tüm değişken ve fonksiyonlara ulaşabildiğimizi görebilirsiniz.

c++ thisSon olarak this kullanarakta aynı değişkenlere ulaştığımızı gösteren bir örnek yapmak istiyorum. Print() fonksiyonumuz şu şekilde olsun;

void Math::Print()
{
cout << "(m_x, m_y) = " << m_x << ", " << m_y << endl;
cout << "(this->m_x, this->m_y) = " << this->m_x << ", " << this->m_y << endl;
}

Mainde de iki tane nesne tanımlayıp onları yazdıralım;

Math math(3,5);
math.Print();

Math math2(2,9);
math2.Print();

Ekran çıktımızda this kullanarakta aynı değişkenlere ulaşabildiğimizi göreceksiniz.

C++ this