# Convert digit/number to words

## Converting digit/number to words

The conversion of numbers in words is just a conversion of numeric values to the English format of reading numbers. This code supports the conversion of numbers from 0 – 9999 in English format. Digits have different places when read from its ones place to above. Different places for numbers are:-

• Single digits:- Ones
• Two Digits:-Tens
• Three Digits:- Hundreds
• Four Digits:- Thousands

Etc. as in this program we will be converting only up-to 4-Digits ## Algorithm

• Step 1:- Start.
• Step 2:- Taking input as a string from the user.
• step 3:- Check the length of the input.
• step 4:- if the length is zero print ’empty’ and if the length is greater than 4 print ‘give a string of specific length’
• Step 5:- if length id between 1 – 4, Create arrays for different values.
• Step 6:- Checking the length of the string.
• Step 7:- According to the place of the digit, we will show the output.
• Step 8:- End.

### C++ Code:-

`#include <iostream>#include <string>using namespace std;const string EMPTY = "";const string X[] = { EMPTY, "One ", "Two ", "Three ", "Four ", "Five ",                "Six ", "Seven ", "Eight ", "Nine ", "Ten ", "Eleven ",                "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ",                "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen " };const string Y[] = { EMPTY, EMPTY, "Twenty ", "Thirty ", "Forty ", "Fifty ",                "Sixty ", "Seventy ", "Eighty ", "Ninety " };// Function to convert a single-digit or two-digit number into wordsstring convertToDigit(int n, string suffix){    // if `n` is zero    if (n == 0) {        return EMPTY;    }    // split `n` if it is more than 19    if (n > 19) {        return Y[n / 10] + X[n % 10] + suffix;    }    else {        return X[n] + suffix;    }}// Function to convert a given number (max 9-digits) into wordsstring convert(unsigned long long int n){    // string to store word representation of the given number    string res;    // this handles digits at ones and tens place    res = convertToDigit((n % 100), "");    if (n > 100 && n % 100) {        res = "and " + res;    }    // this handles digit at hundred place    res = convertToDigit(((n / 100) % 10), "Hundred ") + res;    // this handles digits at thousand and tens thousand place    res = convertToDigit(((n / 1000) % 100), "Thousand ") + res;    // this handles digits at hundred thousand and one million place    res = convertToDigit(((n / 100000) % 100), "Lakh, ") + res;    // this handles digits at ten million and hundred million place    res = convertToDigit((n / 10000000) % 100, "Crore, ") + res;    // this handles digits at ten million and hundred million place    res = convertToDigit((n / 1000000000) % 100, "Billion, ") + res;    return res;}// C++ program to convert numbers to wordsint main(){    int n;    cout<<"enter a number:- ";    cin>>n;    cout<<convert(n) << endl;    return 0;}`
`enter a number:- 22Twenty Two`

## Algorithm

• Step 1:- Start.
• Step 2:- Taking input as a string from the user.
• step 3:- Check the length of the input.
• step 4:- if the length is zero print ’empty’ and if the length is greater than 4 print ‘give a string of specific length’
• Step 5:- if length id between 1 – 4, Create arrays for different values.
• Step 6:- Checking the length of the string.
• Step 7:- According to the place of the digit, we will show the output.
• Step 8:- End.

### C++ Code:-

`#include <iostream>#include <string>using namespace std;const string EMPTY = "";const string X[] = { EMPTY, "One ", "Two ", "Three ", "Four ", "Five ",                "Six ", "Seven ", "Eight ", "Nine ", "Ten ", "Eleven ",                "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ",                "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen " };const string Y[] = { EMPTY, EMPTY, "Twenty ", "Thirty ", "Forty ", "Fifty ",                "Sixty ", "Seventy ", "Eighty ", "Ninety " };// Function to convert a single-digit or two-digit number into wordsstring convertToDigit(int n, string suffix){    // if `n` is zero    if (n == 0) {        return EMPTY;    }    // split `n` if it is more than 19    if (n > 19) {        return Y[n / 10] + X[n % 10] + suffix;    }    else {        return X[n] + suffix;    }}// Function to convert a given number (max 9-digits) into wordsstring convert(unsigned long long int n){    // string to store word representation of the given number    string res;    // this handles digits at ones and tens place    res = convertToDigit((n % 100), "");    if (n > 100 && n % 100) {        res = "and " + res;    }    // this handles digit at hundred place    res = convertToDigit(((n / 100) % 10), "Hundred ") + res;    // this handles digits at thousand and tens thousand place    res = convertToDigit(((n / 1000) % 100), "Thousand ") + res;    // this handles digits at hundred thousand and one million place    res = convertToDigit(((n / 100000) % 100), "Lakh, ") + res;    // this handles digits at ten million and hundred million place    res = convertToDigit((n / 10000000) % 100, "Crore, ") + res;    // this handles digits at ten million and hundred million place    res = convertToDigit((n / 1000000000) % 100, "Billion, ") + res;    return res;}// C++ program to convert numbers to wordsint main(){    int n;    cout<<"enter a number:- ";    cin>>n;    cout<<convert(n) << endl;    return 0;}`
`enter a number:- 22Twenty Two`