Hexadecimal number to decimal conversion
To take a quick first stab at some style issues:


Follow a consistent indentation style. This makes the code extremely readable, and you will thank yourself later when you come back to your code.

For example:

void foo()
{
  do 
  {
    bar();
  } while(0);
}

int main()
{
  foo();
}

Try to break down your program into smaller code blocks that you can reason about them independently, and perhaps even test them independently.

For example, how about start with this template, and fill in the code:

// checks
bool isValid(const std::string &amp;hexInput)
{

}

int64_t convertHexToDecimal(const std::string&amp; hexString)
{

}

int main()
{
    std::string input;
    std::cin &gt;&gt; input;

    while(isValid(input))
    {
        // perform the conversion
        int64_t convertedDecimal = convertHexToDecimal(input);

        // output the conversion
        std::cout &lt;&lt; "..." &lt;&lt; convertedDecimal &lt;&lt;  std::endl;

        // get new input
        std::cin &gt;&gt; input;
    }
}

Use std::string liberally instead of a character array. I think this is a more c++11 style of going about it. This will allow you to utilize the wealth of STL. This is more recognizable, and reduces the changes of introducing bugs in your hand-rolled while/for loop. 

auto found = input.find('.');
if (found != std::string::npos)
{
    std::cout &lt;&lt; "Period found at: " &lt;&lt; found &lt;&lt; '\n';
}

Your way of checking if the input string is hexadecimal is very awkward and unreadable. Whenever you use constants, you should declare them as consts, so you can update them without having to change the code.

A hexadecimal string has characters from one of the following set of characters:

0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F and the ., also the . should appear exactly once, and should probably not be the last character of the string. Also, you can use the characters directly for the comparison instead of the ASCII values. 

bool isValidHex = true;

// for_each will iterate between the the provided iterators
// for each position, you can pass a lambda function that checks
// the characters
std::for_each(
    str.begin(), 
    str.end(), 
    [&amp;isValidHex](char c) 
          {
            // std::cout &lt;&lt; "Checking" &lt;&lt; c &lt;&lt; std::endl; 
            if ((c &gt;= 'a' &amp;&amp; c &lt;= 'f') || 
                (c &gt;= 'A' &amp;&amp; c &lt;= 'F') || 
                (c &gt;= '0' &amp;&amp; c  &lt;= '9'))
            {
                // this is a valid hex.
            }
            else
            {
                isValidHex = false;
            }              
          });


If lambdas are not your style, you can also use the new c++11 loop style, which is much more readable.

for (char c : input)
{
    // perform checks here
}



To Be Continued..