Suma BCD de números decimales dados

Dados dos números A y B , la tarea es realizar la suma BCD de los números dados.

Ejemplos: 

Entrada: A = 12, B = 20 
Salida: 110010 
Explicación: 
La suma de A y B es 12 + 20 = 32. 
La representación binaria de 3 = 0011 
La representación binaria de 2 = 0010 
Por lo tanto, la Suma BCD es “0011” + “0010” = “110010”

Entrada: A = 10, B = 10 
Salida: 100000 
Explicación: 
La suma de A y B es 10 + 10 = 20. 
La representación binaria de 2 = 0010 
La representación binaria de 0 = 0000 
Por lo tanto, la Suma BCD es “0010” + “0000” = “100000”

Enfoque: La idea es convertir la suma de dos números A y B dados en un número BCD. A continuación se muestran los pasos: 

  1. Encuentre la suma (digamos num ) de los dos números dados A y B.
  2. Para cada dígito en el número num , conviértalo en representación binaria hasta 4 bits .
  3. Concatene la representación binaria de cada dígito anterior e imprima el resultado.

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

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to perform BCD Addition
string BCDAddition(int A, int B)
{
 
    // Store the summation of A and B
    // in form of string
    string s = to_string(A + B);
    int l = s.length();
 
    // To store the final result
    string ans;
 
    string str;
 
    // Forming BCD using Bitset
    for (int i = 0; i < l; i++) {
 
        // Find the binary representation
        // of the current characters
        str = bitset<4>(s[i]).to_string();
        ans.append(str);
    }
 
    // Stripping off leading zeroes.
    const auto loc1 = ans.find('1');
 
    // Return string ans
    if (loc1 != string::npos) {
        return ans.substr(loc1);
    }
    return "0";
}
 
// Driver Code
int main()
{
    // Given Numbers
    int A = 12, B = 20;
 
    // Function Call
    cout << BCDAddition(A, B);
    return 0;
}

Java

// Java program for the above approach
class GFG{
     
// Function to perform BCD Addition
static String BCDAddition(int A, int B)
{
     
    // Store the summation of A and B
    // in form of string
    String s = String.valueOf(A + B);
    int l = s.length();
  
    // Forming BCD using Bitset
    String temp[] = { "0000", "0001",
                      "0010", "0011",
                      "0100", "0101",
                      "0110", "0111",
                      "1000", "1001" };
    String ans = "";
      
    for(int i = 0; i < l; i++)
    {
         
        // Find the binary representation
        // of the current characters
        String t = temp[s.charAt(i) - '0'];
        ans = ans + String.valueOf(t);
    }
          
    // Stripping off leading zeroes.
    int loc1 = 0;
    while (loc1 < l && ans.charAt(loc1) != '1')
    {
        loc1++;
    }
  
    // Return string ans
    return ans.substring(loc1);
}
 
// Driver code    
public static void main(String[] args)
{
     
    // Given Numbers
    int A = 12;
    int B = 20;
      
    // Function Call
    System.out.println(BCDAddition(A, B));
}
}
 
// This code is contributed by divyesh072019

Python3

# Python3 program for the above approach
 
# Function to perform BCD Addition
def BCDAddition(A, B):
 
    # Store the summation of A and B
    # in form of string
    s = str(A + B)
    l = len(s)
 
    # Forming BCD using Bitset
    temp = [ "0000", "0001", "0010", "0011", "0100",
             "0101", "0110", "0111", "1000", "1001" ]
    ans = ""
     
    for i in range(l):
 
        # Find the binary representation
        # of the current characters
        t = temp[ord(s[i]) - ord('0')]
        ans = ans + str(t)
         
    # Stripping off leading zeroes.
    loc1 = ans.find('1')
 
    # Return string ans
    return ans[loc1:]
 
# Driver Code
 
# Given Numbers
A = 12
B = 20
 
# Function Call
print(BCDAddition(A, B))
 
# This code is contributed by grand_master

C#

// C# program for the above approach
using System;
class GFG
{
     
    // Function to perform BCD Addition
    static String BCDAddition(int A, int B)
    {
          
        // Store the summation of A and B
        // in form of string
        string s = (A + B).ToString();
        int l = s.Length;
       
        // Forming BCD using Bitset
        string[] temp = { "0000", "0001",
                          "0010", "0011",
                          "0100", "0101",
                          "0110", "0111",
                          "1000", "1001" };
        string ans = "";         
        for(int i = 0; i < l; i++)
        {
              
            // Find the binary representation
            // of the current characters
            string t = temp[s[i] - '0'];
            ans = ans + t.ToString();
        }
               
        // Stripping off leading zeroes.
        int loc1 = 0;
        while (loc1 < l && ans[loc1] != '1')
        {
            loc1++;
        }
       
        // Return string ans
        return ans.Substring(loc1);
    }
 
  // Driver code
  static void Main()
  {
     
    // Given Numbers
    int A = 12;
    int B = 20;
       
    // Function Call
    Console.Write(BCDAddition(A, B));
  }
}
 
// This code is contributed by divyeshrbadiya07.

Javascript

<script>
// Javascript program for the above approach
// Function to perform BCD Addition
function BCDAddition(A, B)
{
     
    // Store the summation of A and B
    // in form of string
    var s = (A + B).toString();
    var l = s.length;
 
    // Forming BCD using Bitset
    temp = [ "0000", "0001",
                    "0010", "0011",
                    "0100", "0101",
                    "0110", "0111",
                    "1000", "1001" ]
    var ans = "";        
    for(var i = 0; i < l; i++)
    {
         
        // Find the binary representation
        // of the current characters
        var t = temp[s[i] - '0'];
        ans = ans + t.toString();
    }
         
    // Stripping off leading zeroes.
    var loc1 = 0;
    while (loc1 < l && ans[loc1] != '1')
    {
        loc1++;
    }
 
    // Return string ans
    return ans.substring(loc1);
}
 
// Driver code
 
// Given Numbers
var A = 12;
var B = 20;
 
// Function Call
document.write(BCDAddition(A, B));
 
// This code is contributed by     rutvik_56.
</script>
Producción: 

110010

 

Complejidad de tiempo: O(log 10 (A+B))
 

Publicación traducida automáticamente

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