Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include "biginteger.h"
  3.  
  4. using namespace std;
  5.  
  6. BigInteger::BigInteger(string x) {
  7.     number = x;
  8. }
  9.  
  10. BigInteger::~BigInteger() {
  11.  
  12. }
  13.  
  14. void BigInteger::add(BigInteger y) {
  15.     string aux;
  16.     int s = 0;
  17.     reverse(this->number.begin(),this->number.end());
  18.     reverse(y.number.begin(),y.number.end());
  19.     int i;
  20.     bool flag = false;
  21.     if(this->number.size() < y.number.size()) {
  22.         swap(this->number,y.number);
  23.         flag = true;
  24.     }
  25.     for(i = 0;i < this->number.size();i++) {
  26.         int a = this->number[i] - '0' + y.number[i] - '0' + s;
  27.         s = a/10;
  28.         a %= 10;
  29.         aux.push_back(a+'0');
  30.         if(i == y.number.size()-1)
  31.             break;
  32.     }
  33.     i++;
  34.     for(;i < this->number.size();i++) {
  35.         int a = this->number[i] - '0' + s;
  36.         s = a/10;
  37.         a %= 10;
  38.         aux.push_back(a+'0');
  39.     }
  40.     if(s == 1)
  41.         aux.push_back(1);
  42.    
  43.     if(flag)
  44.         swap(this->number,y.number);
  45.    
  46.     reverse(aux.begin(),aux.end());
  47.     reverse(y.number.begin(),y.number.end());
  48.     this->number = aux;
  49. }
  50.  
  51. void BigInteger::less(BigInteger y) {
  52.     string aux;
  53.     string z = y.number;
  54.     int s = 0;
  55.     bool flag = false;
  56.     if(this->number < z) {
  57.         //cout << "Entrou aqui" << endl;
  58.         swap(this->number,z);
  59.         flag = true;
  60.     }
  61.     reverse(this->number.begin(),this->number.end());
  62.     reverse(z.begin(),z.end());
  63.     int i;
  64.     for(i = 0;i < this->number.size();i++) {
  65.         int a = this->number[i] - '0' - (z[i] - '0') + s;
  66.         if(a < 0) {
  67.             a += 10;
  68.             s = -1;
  69.         }
  70.         else
  71.             s = 0;
  72.         aux.push_back(a+'0');
  73.         if(i == z.size()-1)
  74.             break;
  75.     }
  76.     i++;
  77.     for(;i<this->number.size();i++) {
  78.         int a = this->number[i] - '0' + s;
  79.         if(a < 0) {
  80.             a += 10;
  81.             s = -1;
  82.         }
  83.         else
  84.             s = 0;
  85.         aux.push_back(a+'0');
  86.     }
  87.     while(!aux.empty() && aux[aux.size()-1] == '0') {
  88.         aux.erase(aux.end()-1,aux.end());
  89.     }
  90.     if(aux.size() == 0)
  91.         aux.push_back('0');
  92.     if(flag)
  93.         aux.push_back('-');
  94.     reverse(aux.begin(),aux.end());
  95.     this->number = aux;
  96. }
  97.  
  98. void BigInteger::print() {
  99.     cout << this->number << endl;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement