/*************************************************
Reading and adding binary numbers
Write a program that reads in two numbers in
binary, and writes out the sum of the numbers
as an int.  Write a function:

  int readbinary(istream&);

that is able to read a binary number in from any
istream object - i.e. from cin or from a file
input stream - and which returns the int value
of the binary number read in.
*************************************************/
#include <iostream>
#include <fstream>
using namespace std;


int readbinary(istream&);

/************************************
 ** main()
 ************************************/
int main()
{
  int a, b;
  cout << "Enter a binary number: ";
  a = readbinary(cin);
  cout << "Enter a binary number: ";
  b = readbinary(cin);
  cout << "The sum is " << a + b << endl;

  return 0;
}

/************************************
 ** readbinary(IN) Reads in a binary
 ** number from istream IN and returns
 ** the int value of the number read.
 ************************************/
int readbinary(istream& IN)
{
  // Read in first bit (and skip whitespace!)
  char c;
  IN >> c;
  int total = c - '0';

  // Read in subsequent bits
  c = IN.get();
  while(c == '0' || c == '1')
  {
    total = 2*total + (c - '0');
    c = IN.get();
  }

  // Return value of binary number
  return total;
}