Reading in Binary, Spitting out Decimal
Yes, this is a homework assignment; not asking anyone to do it for me. The idea is to read in 10 digits, (1 or 0) and then calculate the decimal number. The code I have now works except that you have to put in exactly 10 digits (instead of "101", "0000000101").
I've been looking up cout.fill and stuff and I can't find out how to pad the variable with leading zeros. cout.fill only pads it for the output and doesn't pad the variable. I was thinking about sprintf() but not sure how to do it. The object of the homework was to convert binary to decimal, which I did, but I asked the professor and he says that he won't put in leading zeros. Any ideas anyone?
Code:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
char binary[10];
double total = 0;
cout << "Enter a 10 digit series of zeros and ones: " << endl;
cin >> binary;
cout.fill('0');
cout << setw( 10 ) << binary << endl;
cout << binary << endl;
for (int i=0; i<10; i++) {
if (binary[i] == '1') {
total += pow((double)2, (double)(9-i));
}
}
cout << "\nThe number you entered was: " << total << endl;
cin >> total;
}