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