Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <iomanip>
  4. #include <typeinfo>
  5. using namespace std;
  6.  
  7. int main() {
  8.   string num1, num2;
  9.   string num3;
  10.   bool flag1(false), flag2(false);
  11.   int choose, carry = 0;
  12.  
  13.   while (flag1 == false || flag2 == false) {
  14.     if (flag1 == false) {
  15.       cout << "Please enter number one! \n";
  16.       cin >> num1;
  17.       for (int i = 0; i < num1.length(); i++) {
  18.         if (!(num1[i] == '0' || num1[i] == '1'))
  19.         {
  20.           cout << "  Binary1     is     not     valid.  \n";
  21.           flag1 = false;
  22.           break;
  23.         }
  24.         else {
  25.           flag1 = true;
  26.         }
  27.       }
  28.     }
  29.     if (flag2 == false && flag1 != false) {
  30.       cout << "Please enter number two! \n";
  31.       cin >> num2;
  32.       for (int i = 0; i < num2.length(); i++)
  33.       {
  34.         if (!(num2[i] == '0' || num2[i] == '1'))
  35.         {
  36.           cout << "  Binary2     is     not     valid.  \n";
  37.           flag2 = false;
  38.           break;
  39.         }
  40.         else {
  41.           flag2 = true;
  42.         }
  43.       }
  44.     }
  45.   }
  46.  
  47.  
  48.  
  49. int size = num1.length() > num2.length() ? num1.length()-1 : num2.length()-1;
  50.  
  51.   if (num1.length() > num2.length())
  52.   {
  53.     num2.insert(0, num1.length()-num2.length(), '0');
  54.   }
  55.   else
  56.   {
  57.     num1.insert(0, num2.length()-num1.length(), '0');
  58.   }
  59.   cout << num1 << " " << num2 << endl;
  60.  
  61. int* sum=new int[num2.length()];
  62.  
  63.   cout << "1.Sum Or 2.Minus : ";
  64.   cin >> choose;
  65.   // cout << typeid(choose).name() << endl;
  66. if (choose == 1) {
  67.     for (int i = num1.length()-1; i >= 0; i--) {
  68.         sum[i] = num1[i] ^ num2[i] ^ carry;
  69.         carry = (num1[i] && num2[i]) || (carry && (num1[i] ^ num2[i]));
  70.     }
  71.     cout << carry;
  72.     for (int i = 0;i <= num1.length()-1;i++) {
  73.         cout << sum[i];
  74.     }
  75.     cout << endl;
  76. }
  77.  
  78. if (choose == 2) {
  79.     bool flag(false);
  80.     carry = 0;
  81.     for (int i = size; i >= 0; i--) {
  82.         if (flag == true) {
  83.             if (num2[i] == '0') {
  84.                 num2[i] = '1';
  85.             } else {
  86.                 num2[i] = '0';
  87.             }
  88.         }
  89.         if (num2[i] == '1') {
  90.             flag = true;
  91.         }
  92.     }
  93.     cout << "num2" << num2 << endl;
  94.     for (int i = size; i >= 0; i--) {
  95.         sum[i] = num1[i] ^ num2[i] ^ carry;
  96.         carry = (num1[i] && num2[i]) || (carry && (num1[i] ^ num2[i]));
  97.     }
  98.     cout << carry;
  99.     for (int i = 0;i <= size;i++) {
  100.         cout << sum[i];
  101.     }
  102.     cout << endl;
  103. }
  104.   return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement