Write a code to Convert number to words . example ip 15 op : fifteen

ip : 1234 op : one thousand and thirty four

Algorithm : When we detect a number at any place how to convert to a word. Obviously we need to store it.

See usage of Data Structure in java and Data Structure in c++ .

See usage of static string in java.

Step 1 ) Create array of ones[20] = {“zero”, “one”, “two”, …, “nineteen”};

Step 2) Create array of tens[10] = {“”, “ten”, “twenty”, …, “ninety”};

Step 3) Divide number by 1000, 100, 20 and convert it.

Step 4) Print it.

## Convert number to words C++ solution

#include<iostream> #include<string> using namespace std; string units [20] = {"","One ","Two ","Three ","Four ", "Five ","Six ","SEven ","Eight ","Nine ","Ten ","Eleven ", "Twelve ","Thirteen ","Fourteen ","Fifteen ","Sixteen ","Seventeen ","Eighteen ","Nineteen "}; string tens[] = {"","","Twenty ","Thirty ","Fourty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninty "}; string digits[] = {"","","","Hundred ","Thousand ","Thousand ","Lakh ","Lakh ","Crore "}; string getOneDigit(int val, int index) { if(val < 10) { string res = units[val]; if(val != 0) { res = res + digits[index]; } return res; } return ""; } string getTensDigit(int val, int index) { if(val < 10) { string res = tens[val] + digits[index]; return res; } return ""; } string getTwoDigit(int val, int index) { string res = ""; int temp = val; if(val < 20) { res = units[val] + res; } else { res = getOneDigit(val%10,0) + res; val = val /10; res = getTensDigit(val %10, 1) + res; } if(temp != 0) res = res + digits[index]; return res; } string convertToString(int n) { string result = ""; int i = 1, r; while(n) { if(i != 3) { r = n %100; result = getTwoDigit(r,i) + result; n = n / 100; i = i+2; } else if(i == 3) { r = n %10; result = getOneDigit(r, i) + result; n = n / 10; i++; } } return result; } int main() { int n, t; cin>>t; while(t--) { cout<<"Entet the number to be converted: "; cin>>n; cout<<"Result : "<<convertToString(n)<<endl; } return 0; }

Optimised Solution by : Rahul Goyal (B.Tech in CSE, Amrita School of Engineering)

See OP : https://ideone.com/FT5Rxv

## Convert number to words java solution

Java solution with Scanner to word utility , which helps user to input number in this program.

See why we have used static string to initialize specialNames, tenseNames.

**Check out this Best Java Programming Books **

import java.util.Scanner; class TestClass { private static final String[] specialNames = { ""," thousand"," million"," billion"," trillion"," quadrillion", " quintillion" }; private static final String[] tensNames = { ""," ten"," twenty"," thirty"," forty"," fifty"," sixty"," seventy", " eighty"," ninety" }; private static final String[] numNames = { ""," one"," two"," three"," four"," five"," six"," seven"," eight", " nine"," ten"," eleven"," twelve"," thirteen"," fourteen"," fifteen", " sixteen"," seventeen"," eighteen"," nineteen" }; private String convertLessThanOneThousand(int number) { String current; if (number % 100 < 20){ current = numNames[number % 100]; number /= 100; } else { current = numNames[number % 10]; number /= 10; current = tensNames[number % 10] + current; number /= 10; } if (number == 0) return current; return numNames[number] + " hundred and" + current; } public String convert(int number) { if (number == 0) { return "zero"; } String prefix = ""; if (number < 0) { number = -number; prefix = "negative"; } String current = ""; int place = 0; do { int n = number % 1000; if (n != 0){ String s = convertLessThanOneThousand(n); current = s + specialNames[place] + current; } place++; number /= 1000; } while (number > 0); return (prefix + current).trim(); } public static void main(String[] args) throws Exception { TestClass obj = new TestClass(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(obj.convert(n)); } }

Rahul says

September 19, 2015 at 10:17 pmI have a solution which I hope you all will like :

//Wordify.. convert the number to a string

#include

#include

using namespace std;

string units [20] = {“”,”One “,”Two “,”Three “,”Four “, “Five “,”Six “,”SEven “,”Eight “,”Nine “,”Ten “,”Eleven “, “Twelve “,”Thirteen “,”Fourteen “,”Fifteen “,”Sixteen “,”Seventeen “,”Eighteen “,”Nineteen “};

string tens[] = {“”,””,”Twenty “,”Thirty “,”Fourty “,”Fifty “,”Sixty “,”Seventy “,”Eighty “,”Ninty “};

string digits[] = {“”,””,””,”Hundred “,”Thousand “,”Thousand “,”Lakh “,”Lakh “,”Crore “};

string getOneDigit(int val, int index) {

if(val < 10) {

string res = units[val];

if(val != 0) {

res = res + digits[index];

}

return res;

}

return "";

}

string getTensDigit(int val, int index) {

if(val < 10) {

string res = tens[val] + digits[index];

return res;

}

return "";

}

string getTwoDigit(int val, int index) {

string res = ""; int temp = val;

if(val >t;

while(t–) {

cout<>n;

cout<<"Result : "<<convertToString(n)<<endl;

}

return 0;

}

anil bhaskar says

January 24, 2016 at 4:56 pmVery simple solution using recursion.

Please check out here https://github.com/bhaskey/digitoword