Convert the number from International system to Indian system - GeeksforGeeks

05 Nov, 2020
Given string str which represents a number with separators(, ) in the International number system, the task is to convert this string representation into the Indian Numeric System. Examples: 
Input: str = “123, 456, 789” Output: 12, 34, 56, 789 Explanation: The given string represents a number in the international system. It is converted to the Indian system. Input: str = “90, 050, 000, 000” Output: 90, 05, 00, 00, 000 
International Numeric System: The International numbering system is used outside the Indian subcontinent to express large numbers. It follows the following schema:
Indian Numeric System: The Indian numbering system is used in the Indian subcontinent to express large numbers. It follows the following schema:
Approach: From the above representations, the idea is to first obtain the number without any separators. Therefore: 
Remove all the separators(, ) from the string.Reverse the string.Process the string and put a separator(, ) after the third number.Now put a separator(, ) after every second number. This converts the number into the Indian Numeric System.Reverse the string again and print it.
Remove all the separators(, ) from the string.
Reverse the string.
Process the string and put a separator(, ) after the third number.
Now put a separator(, ) after every second number. This converts the number into the Indian Numeric System.
Reverse the string again and print it.
Below is the implementation of the above approach: 
C++
Java
Python3
// 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 codeint main(){    string input1 = "123, 456, 789";    string input2 = "90, 050, 000, 000";     cout << convert(input1) << endl;    cout << convert(input2);}
// Java program to convert the number// from International system// to Indian systemimport 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 codepublic 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 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 codeinput1 = "123, 456, 789"input2 = "90, 050, 000, 000"print(convert(input1))print(convert(input2)) # This code is contributed by avanitrachhadiya2155
12, 34, 56, 789
90, 05, 00, 00, 000


 
offbeat
avanitrachhadiya2155
Mathematical
School Programming
Strings
Strings
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Modulo Operator (%) in C/C++ with Examples
Program to find GCD or HCF of two numbers
Merge two sorted arrays
Prime Numbers
Program to find sum of elements in a given array
Python Dictionary
Arrays in C/C++
Inheritance in C++
Reverse a string in Java
Interfaces in Java