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