Vecteurs et nombres énormes

Je dois utiliser des vecteurs pour append 2 nombres énormes, comme ceci:

(Exemple: 3049358031 + 1449238031 )

J’ai cherché partout, mais je n’ai rien trouvé.

(Je ne dois utiliser que des vecteurs)

J’ai ce code (qui ne fonctionne pas):

 #include  #include  using namespace std; int main() { vector  int1; vector  int2; vector  final; int input1, input2; int length = 0, length1 = 0; cin >> input1 >> input2; cout << "after cin" < length1){ strNum = to_ssortingng(input1); length = strNum.length(); } else { strNum1 = to_ssortingng(input2); length1 = strNum.length(); } cout << length; string q = to_string(input2); for(int i = 0; i < length; i++){ int1[i] = strNum.at(i); int2[i] = strNum1.at(i); } cout << "after ye" << endl; for(int i = 0; i < length; i++){ cout << " " << int1[i]; } return 0; } 

Dois-je utiliser le vector ou le vector ?

 #include  #include  #include  #include  #include  #include  #include  #include  using namespace std; vector ssortingngToVector(ssortingng representation) { const unsigned DIGITS_LIMIT = numeric_limits::digits10; for (size_t i = DIGITS_LIMIT; i < representation.size(); i += DIGITS_LIMIT + 1) representation.insert(i, 1, ' '); vector literal; ssortingngstream representationStream(representation); do { unsigned value; representationStream >> value; literal.push_back(value); } while (!representationStream.eof()); return literal; } vector operator + (const vector & x, const vector & y) { vector accumulator = (x.size() > y.size())? x : y; const vector &increment = (x.size() < y.size())? x : y; const unsigned LIMIT = static_cast(pow(10, numeric_limits::digits10)); const unsigned LITTLE_SIZE = min(accumulator.size(), increment.size()); for (size_t i = 0; i < LITTLE_SIZE; ++i) { const unsigned UNTIL_LIMIT = LIMIT - accumulator[i]; if (UNTIL_LIMIT > increment[i]) accumulator[i] += increment[i]; else { accumulator[i] = increment[i] - UNTIL_LIMIT; size_t j; for (j = i + 1; j < accumulator.size() && accumulator[j] == LIMIT; ++j) accumulator[j] = 0; if (j < accumulator.size()) ++accumulator[j]; else accumulator.push_back(1); } } return accumulator; } inline istream &operator >> (istream & in, vector & bigInteger) { ssortingng str; if (in >> str) bigInteger = ssortingngToVector(str); else throw runtime_error("Input big integer failure"); // TODO treat this failure return in; } inline ostream &operator << (ostream & out, const vector & result) { for (vector::const_reverse_iterator it = result.rbegin(); it != result.rend(); ++it) out << *it; return out; } main() { vector x, y, result; cout << "x = "; cin >> x; cout << "y = "; cin >> y; result = x + y; cout << x << " + " << y << " = " << result << endl; } 

MPZ est votre ami:

Pour définir votre grand nombre, par exemple

  mpz_set_str (MP_INT *integer, char *initial_value, int base) 

Et fais ton truc

  std::ssortingng add_large( char const * in1, char const * in2, int const SIZE) { MP_INT integ1, integ2, result; mpz_set_str (&integ1, in2, 10); mpz_set_str (&integ2, in2, 10); mpz_add (&result, &integ1, &integ2); char output[SIZE]; mpz_get_str (output, 10, &result); return output; }