1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#include <iostream>
using namespace std;
void intro();
void input();
void input(char[]);
void output(char[]);
void hex_sum(char[], char[], char[]);
int main()
{
char answer;
intro();
do
{
input();
cout << endl << endl << "Do you wish to convert another hexadecimal number? (y/n) \n";
cin >> answer;
} while(answer == 'y' || answer == 'Y');
cout << "Good-bye! \n";
return 0;
}
void intro()
{
cout << "Enter a hexadecimal number of 10 or fewer digits \n"
<< "0-9 and A-F (in caps) \n"
<< "Press lower case q to stop the entry \n" << endl;
}
void input()
{
char number_1[10] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};
char number_2[10] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};
char sum[10] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0'};
char temp[10] = {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0'}; //initializing all the variables
cout << "Enter the first hexadecimal number \n";
input(number_1);
cout << endl;
cout << "Enter the second hexadecimal number \n";
input(number_2);
cout << endl;
hex_sum(number_1, number_2, sum);;
cout << "The addition of the two hexadecimal numbers is \n";
output(sum);
}
void input(char number[])
{
int i = 0;
char c = '0', tmp;
while(c != 'q') //this is my problem right here!
{
cin >> c;
number[i] = c;
i++;
}
number[--i] = '0';
for(int k = 0; k < i/2; k++)
{
tmp = number[k];
number[k] = number[i - 1 - k];
number[i - 1 - k] = tmp;
}
}
void output(char number[])
{
for(int i = 9; i >= 0; i--)
{
cout << number[i];
}
}
void hex_sum(char number_1[], char number_2[], char sum[])
{
int x, y, s, carry = 0, next_carry = 0;
for(int i = 0; i < 10; i++)
{
if('0' <= number_1[i] && number_1[i] < '0' + 10)
x = number_1[i] - '0';
else
x = number_1[i] - 'A' + 10;
if('0' <= number_2[i] && number_2[i] < '0' + 10)
y = number_2[i] - '0';
else
y = number_2[i] - 'A' + 10;
carry = next_carry;
s = (x + y + carry) % 16;
next_carry = (x + y + carry) / 16; //converts the number back to hex
if(0 <= s && s < 10)
sum[i] = char('0' + s);
else if(10 <= s && s < 16)
sum[i] = char('A' + s - 10);
else
cout << "Invalid input \n";
}
if(1 == carry && 1 == next_carry)
cout << "Overflow! \a \n";
}
|