Convierta el número del sistema internacional al sistema indio

Dada la string str que representa un número con separadores (,) en el sistema numérico internacional, la tarea es convertir esta representación de string en el sistema numérico indio. 
Ejemplos: 

Entrada: str = “123, 456, 789” 
Salida: 12, 34, 56, 789 
Explicación: 
La string dada representa un número en el sistema internacional. Se convierte al sistema indio. 
Entrada: str = “90, 050, 000, 000” 
Salida: 90, 05, 00, 00, 000 

Sistema numérico internacional: el sistema numérico internacional se usa fuera del subcontinente indio para expresar números grandes. Sigue el siguiente esquema:

Número Aplicar separadores En palabras
1 1 Una
10 10 Diez
100 100 Cien
1000 1, 000 Mil
10000 10, 000 Diez mil
100000 100, 000 Cien mil
1000000 1, 000, 000 Un millón
10000000 10, 000, 000 Diez millones
100000000 100, 000, 000 Cien millones
1000000000 1, 000, 000, 000 mil millones

Sistema numérico indio: el sistema numérico indio se utiliza en el subcontinente indio para expresar números grandes. Sigue el siguiente esquema:

Número Aplicar separadores En palabras
1 1 Una
10 10 Diez
100 100 Cien
1000 1, 000 Mil
10000 10, 000 Diez mil
100000 1, 00, 000 Un lakh
1000000 10, 00, 000 diez lakh
10000000 1, 00, 00, 000 un millón de rupias
100000000 10, 00, 00, 000 diez millones de rupias
1000000000 100, 00, 00, 000 cien millones de rupias

Enfoque: A partir de las representaciones anteriores, la idea es obtener primero el número sin ningún separador. Por lo tanto: 

  1. Elimina todos los separadores (,) de la string.
  2. Invierta la string .
  3. Procese la string y coloque un separador (,) después del tercer número.
  4. Ahora ponga un separador (,) después de cada segundo número. Esto convierte el número al sistema numérico indio.
  5. Invierta la string nuevamente e imprímala.

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

C++

// C++ program to convert the number
// from International system
// to Indian system
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to convert a number represented
// in International numeric system to
// Indian numeric system.
string convert(string input)
{
    // Find the length of the
    // input string
    int len = input.length();
 
    // Removing all the separators(, )
    // from the input string
    for (int i = 0; i < len;) {
 
        if (input[i] == ', ') {
            input.erase(input.begin() + i);
            len--;
            i--;
        }
        else if (input[i] == ' ') {
            input.erase(input.begin() + i);
            len--;
            i--;
        }
        else {
            i++;
        }
    }
 
    // Reverse the input string
    reverse(input.begin(), input.end());
 
    // Declaring the output string
    string output;
 
    // Process the input string
    for (int i = 0; i < len; i++) {
        // Add a separator(, ) after the
        // third number
        if (i == 2) {
            output += input[i];
            output += ", ";
        }
 
        // Then add a separator(, ) after
        // every second number
        else if (i > 2 && i % 2 == 0
                 && i + 1 < len) {
            output += input[i];
            output += ", ";
        }
        else {
            output += input[i];
        }
    }
 
    // Reverse the output string
    reverse(output.begin(), output.end());
 
    // Return the output string back
    // to the main function
    return output;
}
 
// Driver code
int main()
{
    string input1 = "123, 456, 789";
    string input2 = "90, 050, 000, 000";
 
    cout << convert(input1) << endl;
    cout << convert(input2);
}

Java

// Java program to convert the number
// from International system
// to Indian system
import java.util.*;
class GFG{
 
// Function to convert a number represented
// in International numeric system to
// Indian numeric system.
static String convert(String input)
{
    StringBuilder sbInput = new StringBuilder(input);
 
    // Find the length of the
    // sbInput
    int len = sbInput.length();
 
    // Removing all the separators(, )
    // from the sbInput
    for (int i = 0; i < len;)
    {
        if (sbInput.charAt(i) == ',')
        {
            sbInput.deleteCharAt(i);
            len--;
            i--;
        }
        else if (sbInput.charAt(i) == ' ')
        {
            sbInput.deleteCharAt(i);
            len--;
            i--;
        }
        else
        {
            i++;
        }
    }
 
    // Reverse the sbInput
    StringBuilder sbInputReverse = sbInput.reverse();
 
    // Declaring the output
    StringBuilder output = new StringBuilder();
 
    // Process the sbInput
    for (int i = 0; i < len; i++)
    {
 
        // Add a separator(, ) after the
        // third number
        if (i == 2)
        {
            output.append(sbInputReverse.charAt(i));
            output.append(" ,");
        }
 
        // Then add a separator(, ) after
        // every second number
        else if (i > 2 && i % 2 == 0 && i + 1 < len)
        {
            output.append(sbInputReverse.charAt(i));
            output.append(" ,");
        }
        else
        {
            output.append(sbInputReverse.charAt(i));
        }
    }
 
    // Reverse the output
    StringBuilder reverseOutput = output.reverse();
 
    // Return the output string back
    // to the main function
    return reverseOutput.toString();
}
 
// Driver code
public static void main(String[] args)
{
    String input1 = "123, 456, 789";
    String input2 = "90, 050, 000, 000";
 
    System.out.println(convert(input1));
    System.out.println(convert(input2));
}
}
 
// This code is contributed by offbeat

Python3

# Python3 program to convert
# the number from International
# system to Indian system
 
# Function to convert a number
# represented in International
# numeric system to Indian numeric
# system.
def convert(input):
 
    # Find the length of the
    # input string
    Len = len(input)
 
    # Removing all the separators(, )
    # from the input string
    i = 0
    while(i < Len):
        if(input[i] == ","):
            input = input[:i] + input[i + 1:]
            Len -= 1
            i -= 1
        elif(input[i] == " "):
            input=input[:i] + input[i + 1:]
            Len -= 1
            i -= 1
        else:
            i += 1
    # Reverse the input string
    input=input[::-1]
 
    # Declaring the output string
    output = ""
 
    # Process the input string
    for i in range(Len):
 
        # Add a separator(, ) after the
        # third number
        if(i == 2):
            output += input[i]
            output += " ,"
         
        # Then add a separator(, ) after
        # every second number
        elif(i > 2 and i % 2 == 0 and
             i + 1 < Len):
            output += input[i]
            output += " ,"
        else:
            output += input[i]
     
    # Reverse the output string
    output=output[::-1]
 
    # Return the output string back
    # to the main function
    return output
 
# Driver code
input1 = "123, 456, 789"
input2 = "90, 050, 000, 000"
print(convert(input1))
print(convert(input2))
 
# This code is contributed by avanitrachhadiya2155

Javascript

<script>
 
// JavaScript program to convert the number
// from International system
// to Indian system
 
// Function to convert a number represented
// in International numeric system to
// Indian numeric system.
function convert(input)
{
    // Find the length of the
    // input string
    let len = input.length;
 
    // Removing all the separators(, )
    // from the input string
    for (let i = 0; i < len;) {
 
        if (input[i] == ',') {
            input = input.substring(0,i) + input.substring(i+1,);
            len--;
            i--;
        }
        else if (input[i] == ' ') {
            input = input.substring(0,i) + input.substring(i+1,);
            len--;
            i--;
        }
        else {
            i++;
        }
    }
 
    // Reverse the input string
    input = input.split("").reverse().join("");
 
    // Declaring the output string
    let output = "";
 
    // Process the input string
    for (let i = 0; i < len; i++) {
        // Add a separator(, ) after the
        // third number
        if (i == 2) {
            output += input[i];
            output += " ,";
        }
 
        // Then add a separator(, ) after
        // every second number
        else if (i > 2 && i % 2 == 0
                 && i + 1 < len) {
            output += input[i];
            output += " ,";
        }
        else {
            output += input[i];
        }
    }
 
    // Reverse the output string
    output = output.split("").reverse().join("");
 
    // Return the output string back
    // to the main function
    return output;
}
 
// Driver code
 
let input1 = "123, 456, 789";
let input2 = "90, 050, 000, 000";
 
document.write(convert(input1),"</br>");
document.write(convert(input2),"</br>");
 
// This code is contributed by shinjanpatra
 
</script>
Producción: 

12, 34, 56, 789
90, 05, 00, 00, 000

 

Publicación traducida automáticamente

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