8 formas diferentes de sumar dos números en C/C++

Dados dos números A y B , la tarea es encontrar la suma de los dos números dados.
Ejemplos: 

Entrada: A = 5, B = 6 
Salida: suma = 11
Entrada: A = 4, B = 11 
Salida: suma = 15  

Método 1: usar el operador de suma: aquí simplemente use el operador de suma entre dos números e imprima la suma del número. 

suma = A + B 

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

C++

// C++ program to add two number
// using addition operator
#include <iostream>
using namespace std;
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // Return sum of A and B
    return A + B;
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    cout << "sum = " << addTwoNumber(A, B);
    return 0;
}
Producción

sum = 15

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)

Método 2: usar el operador de resta : aquí simplemente use el operador de resta entre dos números, dos veces para que menos-menos se multiplique y produzca el operador + y devuelva la suma del número.  

suma = A – (-B) 
 

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

C++

// C++ program to add two number
// using subtraction operator
#include <iostream>
using namespace std;
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // Return sum of A and B
    return A - (-B);
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    cout << "sum = " << addTwoNumber(A, B);
    return 0;
}
Producción

sum = 15

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)

Método 3: usar el operador de incremento/decremento : aquí use el operador de incremento/decremento mientras un número se reduce a cero y en otro número se incrementa en uno cuando el primer número se reduce en uno, devuelve el segundo número. 

mientras (B > 0) { 
A++; 
B-; 
}  

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

C++

// C++ program to add two number using
// increment/decrement operator
#include <iostream>
using namespace std;
 
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // When A is positive
    while (A > 0) {
        A--;
        B++;
    }
 
    // When A is negative
    while (A < 0) {
        A++;
        B--;
    }
 
    // Return sum of A and B
    return B;
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    cout << "sum = " << addTwoNumber(A, B);
    return 0;
}
Producción

sum = 15

Complejidad de tiempo: O(N) donde N es el min(A,B)
Espacio auxiliar: O(1)

Método 4: usar el método printf() : Aquí , el especificador «%*s» imprime el valor de una variable, el valor de los tiempos variables y printf devuelve cuántos caracteres se imprimen en la pantalla.

printf(“%*s%*s”, A, “”, B, “”); 

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

C++

// C++ program to add two number
// using printf method
#include <iostream>
using namespace std;
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // Return sum of A and B
    return printf("%*s%*s", A, "", B, "");
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    printf("sum = %d", addTwoNumber(A, B));
    return 0;
}
Producción

               sum = 15

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)

Método 5: utilizando el método Half Adder : se puede obtener una suma de dos bits realizando Bitwise XOR (^) de los dos bits. El bit de acarreo se puede obtener realizando Bitwise AND(&) de dos bits. 
Arriba hay una lógica simple de Half Adder que se puede usar para agregar 2 bits individuales. Podemos extender esta lógica para números enteros. Si x e y no tienen bits establecidos en la(s) misma(s) posición(es), entonces XOR bit a bit (^) de xey da la suma de xey. Para incorporar bits de configuración comunes, se utiliza AND (&). AND bit a bit de xey da todos los bits de acarreo. Calculamos (x & y) << 1 y lo sumamos a x ^ y para obtener el resultado requerido. 

Suma = A & B; 
Llevar = x ^ y 

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

C++

// C++ program to add two number
// using half adder method
#include <iostream>
using namespace std;
 
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
 
    // Iterate till there is no carry
    while (B != 0) {
 
        // Carry now contains common
        // set bits of A and B
        int carry = A & B;
 
        // Sum of bits of A and B
        // where at least one of the
        // bits is not set
        A = A ^ B;
 
        // Carry is shifted by one so
        // that adding it to A gives
        // the required sum
        B = carry << 1;
    }
 
    return A;
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    printf("sum = %d", addTwoNumber(A, B));
    return 0;
}
Producción

sum = 15

Complejidad de tiempo: O (logn)

Espacio Auxiliar: O(1)

Método 6: uso de exponencial y logaritmo: la idea es encontrar el exponencial de los dos números dados e imprimir el logarítmico del resultado.

printf(“%g\n”, log(exp(A) * exp(B))); 

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

C++

// C++ program to add two number
// using log and exponential
#include <bits/stdc++.h>
using namespace std;
 
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // Return sum of A and B
    return log(exp(A) * exp(B));
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    printf("sum = %d", addTwoNumber(A, B));
    return 0;
}
Producción

sum = 15

Complejidad de tiempo: O (logn)

Espacio Auxiliar: O(1)

Método 7 – usando Recursión : 

  1. Obtenga los números A y B cuya suma se va a calcular.
  2. Caso base: si A es mayor que 0, devuelve B.
if(A > 0) {
   return B;
}

      3 . Llamada recursiva: actualice A a (A&B)<<1 y B a A ^ B y llame recursivamente para obtener el valor actualizado. 

recursive_function((A & B) << 1, A ^ B);

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

C++

// C++ program to add two number
// using Recursion
#include <iostream>
 
// Function to return sum
// of two number
int addTwoNumber(int A, int B)
{
    // Base Case
    if (!A)
        return B;
 
    // Recursive Call
    else
        return addTwoNumber((A & B) << 1, A ^ B);
}
 
// Driver Code
int main()
{
    // Given two number
    int A = 4, B = 11;
 
    // Function call
    printf("sum = %d", addTwoNumber(A, B));
    return 0;
}
Producción

sum = 15

Complejidad de tiempo: O (logn)

Espacio auxiliar: O (logn)

Método 8 :   usar este puntero

Tomando dos números x e y del usuario y la tarea es encontrar la suma de los dos números dados usando este puntero.

Ejemplo:

aporte:

Introduzca dos números: 5

4

producción:

La suma es: 9

Esto se puede hacer accediendo al miembro de datos de un objeto usando este puntero y realizando una operación de suma entre ellos.

C++

// CPP program for above approach
#include <iostream>
using namespace std;
 
class A
{
    int a, b, sum;
 
public:
    A(int x, int y)
    {
        a = x;
        b = y;
    }
     
    // Using this pointer to
    // access variable
    void calcSum()
    {
      sum = this->a + this->b;
    }
 
    void showSum()
    {
      cout << "Sum is: " << sum << endl;
    }
};
 
// Driver Code
int main()
{
    int x, y;
    cout << "Enter Two Numbers: ";
    x = 4, y = 5;
    A a(x, y);
    a.calcSum();
    a.showSum();
    return 0;
}
Producción

Enter Two Numbers: Sum is: 9

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por shivanisinghss2110 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 *