Cómo almacenar una gran cantidad de más de 100 dígitos en C++

Dado un entero N en forma de string str que consta de más de 100 dígitos, la tarea es almacenar el valor para realizar una operación aritmética e imprimir el entero dado.
Ejemplos: 
 

Input: str = “54326789013892014531903492543267890138920145319034925432678901389201” 
Output: 54326789013892014531903492543267890138920145319034925432678901389201
Input: str = “7890138920145319034925432678907890138920145319034925432678901903492543267890” 
Output: 7890138920145319034925432678907890138920145319034925432678901903492543267890 
 

Enfoque: 
No hay ningún tipo de datos presente en C++ para almacenar 10 100 . Entonces, la idea es obtener la entrada como string (ya que la string puede tener cualquier longitud) y luego convertir esta string en una array de dígitos de la misma longitud que la string. Almacenar el entero grande en una array de enteros ayudará a realizar algunas operaciones aritméticas básicas con ese número. 
A continuación se muestran los pasos:
 

  1. Tome el número grande como entrada y guárdelo en una string.
  2. Cree una array de enteros arr[] de longitud igual al tamaño de la string.
  3. Iterar sobre todos los caracteres (dígitos) de la string str uno por uno y almacenar esos dígitos en el índice correspondiente de la array arr 
     

array[i] = string[i] – ‘0’;
// Aquí ‘0’ representa el dígito 0, y 
// str[i] – ‘0’ = ASCII(str[i]) – ASCII(‘0’) = ASCII(str[i] – 48 
 

  1.  
  2. Usando el paso anterior, podemos almacenar un número muy grande para realizar cualquier operación aritmética.

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ program for the above approach
#include <iostream>
using namespace std;
 
// Function to return dynamic allocated
// array consisting integers individually
int* GetBigInteger(string str)
{
    int x = str.size(), a = 0;
 
    // Create an array to store the big
    // integer into it.
 
    // Make the array size same as the
    // size of string str
    int* arr = new int[str.size()];
 
    // Loop to extract string elements
    // into the array one by one
    while (a != x) {
 
        // Subtracting '0' to convert
        // each character into digit
 
        // str[a] - '0'
        // = ASCII(str[a]) - ASCII('0')
        // = ASCII(str[a] - 48
        arr[a] = str[a] - '0';
        a++;
    }
 
    // Return the reference of the array
    return arr;
}
 
// Driver Code
int main()
{
    // Big Integer in form of string str
    string str = "12345678098765431234567809876543";
 
    // Function Call
    int* arr = GetBigInteger(str);
 
    // Print the digits in the arr[]
    for (int i = 0; i < str.size(); i++) {
        cout << arr[i];
    }
    return 0;
}
Producción: 

12345678098765431234567809876543

 

Complejidad de tiempo: O(K) , K es el número de dígitos en el número 
Espacio auxiliar: O(K) , K es el número de dígitos en el número
 

Publicación traducida automáticamente

Artículo escrito por satyajitmahunta98 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *