Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include "biginteger.h"
- using namespace std;
- BigInteger::BigInteger(string x) {
- number = x;
- }
- BigInteger::~BigInteger() {
- }
- void BigInteger::add(BigInteger y) {
- string aux;
- int s = 0;
- reverse(this->number.begin(),this->number.end());
- reverse(y.number.begin(),y.number.end());
- int i;
- bool flag = false;
- if(this->number.size() < y.number.size()) {
- swap(this->number,y.number);
- flag = true;
- }
- for(i = 0;i < this->number.size();i++) {
- int a = this->number[i] - '0' + y.number[i] - '0' + s;
- s = a/10;
- a %= 10;
- aux.push_back(a+'0');
- if(i == y.number.size()-1)
- break;
- }
- i++;
- for(;i < this->number.size();i++) {
- int a = this->number[i] - '0' + s;
- s = a/10;
- a %= 10;
- aux.push_back(a+'0');
- }
- if(s == 1)
- aux.push_back(1);
- if(flag)
- swap(this->number,y.number);
- reverse(aux.begin(),aux.end());
- reverse(y.number.begin(),y.number.end());
- this->number = aux;
- }
- void BigInteger::less(BigInteger y) {
- string aux;
- string z = y.number;
- int s = 0;
- bool flag = false;
- if(this->number < z) {
- //cout << "Entrou aqui" << endl;
- swap(this->number,z);
- flag = true;
- }
- reverse(this->number.begin(),this->number.end());
- reverse(z.begin(),z.end());
- int i;
- for(i = 0;i < this->number.size();i++) {
- int a = this->number[i] - '0' - (z[i] - '0') + s;
- if(a < 0) {
- a += 10;
- s = -1;
- }
- else
- s = 0;
- aux.push_back(a+'0');
- if(i == z.size()-1)
- break;
- }
- i++;
- for(;i<this->number.size();i++) {
- int a = this->number[i] - '0' + s;
- if(a < 0) {
- a += 10;
- s = -1;
- }
- else
- s = 0;
- aux.push_back(a+'0');
- }
- while(!aux.empty() && aux[aux.size()-1] == '0') {
- aux.erase(aux.end()-1,aux.end());
- }
- if(aux.size() == 0)
- aux.push_back('0');
- if(flag)
- aux.push_back('-');
- reverse(aux.begin(),aux.end());
- this->number = aux;
- }
- void BigInteger::print() {
- cout << this->number << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement