// @topic W010101 Convert decimal to binary
// @brief Program to convert decimal value to binary representation

// decimal_2_binary.cpp
//
// Known shortcomings:
//
// (1) the algorithm is designed for positive inputs only;
//     If negative values need to be processed, then additional
//     checks are required.
//
// (2) The number of bits is hardcoded to 8. If the value exceeds
//     255, then program will crash since there are no checks
//     against this condition. Perhaps program should change to use an
//     array of 32 "bits" instead of 8.

#include <iostream>

int main()
{
    unsigned int input = 0;
    std::cout << "Enter value: ";
    while ( std::cin >> input ) {
        // Create a static array of eight "bits"
        // and initialize them to zeroes:
        int bits[8] = {0};

        // A variable to keep track of bit positions:
        int pos = 0;

        // Populate array of bits with appropriate values:
        while( input ) {
            // Is number odd or even?
            // Modulus operator (remainder of division) gives the answer:
            bits[ pos ] = input % 2;

            // Divide by two, remainder of the
            // division is dropped automatically:
            input /= 2;

            // Move on to the next position:
            ++pos;
        }

        // Display the results, starting with the highest bit:
        pos = sizeof( bits ) / sizeof( int ) - 1;
        while ( pos >= 0 ) {                  // Proceed to the lowest bit
            std::cout << bits[ pos ];         // display bit value
            --pos;                            // decrement the position.
        }
        std::cout << "\nEnter value: ";       // We are done, repeat the prompt.
    }
    return 0; // Everything is okay, exiting.
}