Definir una matriz A , A [0] para almacenar un bit XX, A [. 1] para almacenar un diez, y así sucesivamente. También puede utilizar una matriz B para el almacenamiento B .
Calculado C = A + B cuando la primera A [0] y B [0] se añaden, si hay carry, carry put (es decir, las decenas y) en R & lt , y la existencia de la sola dígitos el C [0], es decir, C [0] es igual a ( a [0] + B [0]) 10%. Calcula entonces A [. 1] y B [1] se añaden, a continuación, la alimentación también debe ser bajo valor de hasta r también combinarse, es decir, C [1] debe ser A [1], B [1] y r tres y el número. Si no llevan generación, todavía pueden ser almacenados para llevar a la nueva r , los bits almacenados y para el C [. 1] en. Y así sucesivamente, se puede encontrar C todos los bits.
Por último, el C de salida puede ser.
2010012220100122
. 1 #include <la iostream> 2 #include <CString> . 3 el uso de espacio de nombres STD; . 4 int principal ( void ) 5. { 6. Cadena str1; // de entrada dos cadenas 7. Cadena str2; . 8 // tamaño de la matriz determina la exactitud de tamaño 9. Int ARR = * nuevo nuevo int [ 101 ] { 0 }; 10 int * BRR = new new int [ 101 ] { 0 }; . 11 CIN >> >> str1str2; 12 es int LEN1 str1.length = (); // obtener la primera longitud de la cadena 13 es int Len2 str2.length = (); // obtener la segunda longitud de la cadena 14 int len; 15 para ( int I = 0 ; I <LEN1; I ++) // la primera cadena para convertir cada número entero de bits, almacenado en una matriz de arr 16 { . 17 arr [I] = str1 [LEN1 - I - . 1 ] - ' 0 ' ; // Guardar 1 no debe perderse, porque la longitud LEN1, dará lugar a una matriz disminuida grada 18 } // Causas Guardar revés se pone en la cadena de bits convierte en una primera matriz de enteros posiciones . 19 para ( int I = 0 ; I <Len2; I ++) // la segunda cadena de cada convertir en un entero, se almacenan en un array BRR 20 es { 21 es BRR [I] = str2 [Len2 - I - . 1 ] - ' 0 ' ; 22 es } 23 se len = (LEN1> len2 LEN1 :? len2); // lograr longitud máxima de cadena de 24 para ( int I = 0 ; I <len; I ++) // analógico sumador 25 { 26 es ARR [I] = ARR [I] + BRR [I]; 27 ARR [I + . 1] = ARR [I + 1. ] + ARR [I] / 10 ; 28 ARR [I] = ARR [I]% 10 ; 29 } 30 al mismo tiempo ((ARR [len] == 0 ) && (LEN> 0 )) // a 0 para eliminar el exceso de matriz 31 es { 32 len-- ; 33 es } 34 es para ( int I = len; I> = 0 ; i--) // salida inversa 35 { 36 COUT << ARR [I]; 37 [ } 38 es de retorno 0; 39 }
nota:
(1): Conjunto el tiempo, sino también a una matriz de matrices cada se inicializan a 0, o cuando la adición analógica de problemas de espalda, ya que no tendrá que se produce o ilegible el error array de inicialización.
(2): De acuerdo con objeto de determinar razonablemente el tamaño de la matriz, no demasiado pequeño ni demasiado grande
(3): Como la inicialización matriz de enteros es muy inconveniente, y es difícil de hacer que a medida que la cadena de entrada, por lo que de acuerdo con la primera entrada de cadena, entonces la cadena en una matriz de números enteros
(4): función de longitud () es el número efectivo de bits cadena disponible no contiene '\ 0'
(5): 17 líneas y 21 líneas, len1- i - 1 es razón LEN1 es el número de dígitos 1 si sin disminuir, hará que los límites de la matriz. Guardar porque cuando i es detrás de la serie de analógico Además, la matriz de bits como la primera, pero en el que la cadena de bits original en última posición, por lo que para reducir i.
(6): Antes de la salida de matriz final que debe tomar adicional 0 separó por filtración.