Write C/C++/Java code to convert given number into words.
eg:- Input: 1234
Output: One thousand two hundred thirty-four.
Input: 10
Output: Ten
Does it require a complete switch case for digits 0 to 10.
Adding "teen" after every number name (eg: 14: four "teen".) from 14 to 19.
And than adding "ty" and the digits name for a number in the range 20 to 99.
And so on.
I think there must be some far better approach for solving this.
C code is preferred.
Instead of switch statements, consider using tables of strings indexed by a small value.
Now break the problem into small pieces. Write a function that can output a single-digit number. Then write a function that can handle a two-digit number (which will probably use the previous function). Continue building up the functions as necessary.
Create a list of test cases with expected output, and write code to call your functions and check the output, so that, as you fix problems for the more complicated cases, you can be sure that the simpler cases continue to work.
if you are interested in a ready solution then you may look at HumanizerCpp library (https://github.com/trodevel/HumanizerCpp) - it is a port of C# Humanizer library and it does exactly what you want.
It can even convert to ordinals and currently supports 3 languages: English, German and Russian.
Example:
Output:
In any case you may take a look at the source code and reuse in your project or try to understand the logic. It is written in pure C++ without external libraries.
Regards, Serge