/****************************************************************************** Title : reading_assignment_02.cpp Author : Stewart Weiss Created on : October 14, 2012 Description : This is the code for you second reading assignment. Like the first reading assignment, it has no documentation. It is your job to read it and figure out what it is doing. Purpose : Reading assignment #2 for fall 2012, csci 135.02 Usage : ./reading_assignment_02 Build with : g++ -o reading_assignment_02 reading_assignment_02.cpp Modifications : N/A Due date : October 22, 2012 at the beginning of the class ******************************************************************************/ #include #include #include #include using namespace std; string convertNtoB (int A) { string B; int length = 8 * sizeof(A); int i; for (i = 0; i < length ; i++ ) { if ( A % 2 == 0 ) B = "0" + B; else B = "1" + B; A = A >> 1; } return ' ' + B; } string convertNtoO (int A) { string B; int length = 8 * sizeof(A); int i; char sign ; if ( A < 0) { sign = '-'; A = ~A + 1; } else sign = ' '; for (i = 0; i < length ; i=i+3 ) { switch ( A & 7 ) { case 0: B = "0" + B; break; case 1: B = "1" + B; break; case 2: B = "2" + B; break; case 3: B = "3" + B; break; case 4: B = "4" + B; break; case 5: B = "5" + B; break; case 6: B = "6" + B; break; case 7: B = "7" + B; break; } A = A >> 3; } return sign+B; } string convertNtoX (int A) { string B; int length = 8 * sizeof(A); int i; char sign ; if ( A < 0) { sign = '-'; A = ~A + 1; } else sign = ' '; for (i = 0; i < length ; i=i+4 ) { switch ( A & 15 ) { case 0: B = "0" + B; break; case 1: B = "1" + B; break; case 2: B = "2" + B; break; case 3: B = "3" + B; break; case 4: B = "4" + B; break; case 5: B = "5" + B; break; case 6: B = "6" + B; break; case 7: B = "7" + B; break; case 8: B = "8" + B; break; case 9: B = "9" + B; break; case 10: B = "A" + B; break; case 11: B = "B" + B; break; case 12: B = "C" + B; break; case 13: B = "D" + B; break; case 14: B = "E" + B; break; case 15: B = "F" + B; break; } A = A >> 4; } return sign+B; } int convertStoN( string n , bool &valid) { int i = 0; bool negative = false; string num; int number ; valid = true; while ( i < n.size() && n[i] == ' ' ) i++; if (n[i] == '-' ) { negative = true; i++; } else if (n[i] == '+' ) i++; while ( i < n.size() && n[i] == ' ' ) i++; while( i < n.size() && isdigit(n[i]) ) { num = num + n[i]; i++; } while ( i < n.size() && n[i] == ' ' ) i++; if (i != n.size() ) valid = false; number = negative ? -1*atoi( num.c_str() ) : atoi( num.c_str() ); return number; } int main ( ) { string input; int number; bool valid; cout << "Enter an integer: " ; getline( cin, input ); number = convertStoN(input, valid); if (valid) { cout << "Your number is :" << number <<"\n\n"; cout << "Other people may think about your number as: \n"; cout << "\t" << convertNtoB (number) << endl; cout << "or \n"; cout << "\t" << convertNtoO (number) << endl; cout << "or \n"; cout << "\t" << convertNtoX (number) << endl <