/*
	© MATTO MATTI 2018
	http://mattomatti.com/pl/a0169
	napisane przy użyciu Visual Studio Community 2015
	2018-11-06 v 1.0
*/

#include <iostream>
#include <string>

using namespace std;

string kodujBCD(int a) {
	string wynik = "";
	do {
		string cyfra = "";
		int c = a % 10;
		a /= 10;
		cyfra += ((c & 8) >> 3) + '0';
		cyfra += ((c & 4) >> 2) + '0';
		cyfra += ((c & 2) >> 1) + '0';
		cyfra += ((c & 1) >> 0) + '0';
		wynik = cyfra + wynik;
	} while (a > 0);
	return wynik;
}

int dekodujBCD(string bcd) {
	int a = 0;
	for (int i = 0; i < bcd.size(); i += 4) {
		int c = 0;
		c += (bcd[i] - '0') * 8;
		c += (bcd[i + 1] - '0') * 4;
		c += (bcd[i + 2] - '0') * 2;
		c += (bcd[i + 3] - '0') * 1;
		a = a * 10 + c;
	}
	return a;
}

int main() {
	int a;
	cout << "Podaj liczbe do konwersji:\n a = ";
	cin >> a;
	string bcd = kodujBCD(a);
	cout << "BCD: " << bcd << endl;
	int b = dekodujBCD(bcd);
	cout << "DEC: " << b << endl;
	system("pause");
	return 0;
}