15,907,395 members
See more:
`Mr. Stephen is working in a translator company. His task is to translate the given cash (positive integer number) into words. He found that maximum cash value cannot be more than 10000000000. Write the C++ code to help Mr. Stephen.`

What I have tried:

``` #include <iostream>
using namespace std;

// strings at index 0 is not used, it is to make array
// indexing simple
string one[] = { "", "one ", "two ", "three ", "four ",
"five ", "six ", "seven ", "eight ",
"nine ", "ten ", "eleven ", "twelve ",
"thirteen ", "fourteen ", "fifteen ",
"sixteen ", "seventeen ", "eighteen ",
"nineteen " };

// strings at index 0 and 1 are not used, they are to
// make array indexing simple
string ten[] = { "", "", "twenty ", "thirty ", "forty ",
"fifty ", "sixty ", "seventy ", "eighty ",
"ninety " };

// n is 1- or 2-digit number
string numToWords(int n, string s)
{
string str = "";
// if n is more than 19, divide it
if (n > 19)
str += ten[n / 10] + one[n % 10];
else
str += one[n];

// if n is non-zero
if (n)
str += s;

return str;
}

// Function to print a given number in words
string convertToWords(long n)
{
// stores word representation of given number n
string out;

// handles digits at ten millions and hundred
// millions places (if any)
out += numToWords((n / 10000000), "crore ");

// handles digits at hundred thousands and one
// millions places (if any)
out += numToWords(((n / 100000) % 100), "lakh ");

// handles digits at thousands and tens thousands
// places (if any)
out += numToWords(((n / 1000) % 100), "thousand ");

// handles digit at hundreds places (if any)
out += numToWords(((n / 100) % 10), "hundred ");
out += numToWords(((n/100) %10), "tens");

if (n > 100 && n % 100)
// out += "and ";

// handles digits at ones and tens places (if any)
out += numToWords((n % 100), "");

//Handling the n=0 case
if(out=="")
out = "zero";

return out;
}

// Driver code
int main()
{
int num,temp,length=0,result,n,m=0;
cin>>num;
temp=num;

cout << convertToWords(n) << endl;

return 0;
}```
Posted
Updated 23-Sep-22 7:22am
CPallini 23-Sep-22 3:28am
And... What is the problem with this code you found on the web?
Rick York 23-Sep-22 4:06am
Do you really not see the problem? It is obvious to me. Hint - it's in the main function.
CPallini 23-Sep-22 4:37am
Maybe the 'Driver' code is the OP contribution. :-D
Rick York 23-Sep-22 13:12pm
Probably. That would explain the lack of a clue about it.

## Solution 1

Here is a tip giving full instructions: Converting numbers to the word equivalent. [^] - the code is in C#, but that should be no problem to someone who can write C++ code like that!

## Solution 2

Hint: Look in your main method. Why are you defining all those variables when you only need one?

This leads me to suspect you didn't write the rest of the code. You only wrote the code in main. Copying and pasting code from the web and turning it in as your own work will only get you a failing grade for plagiarism.

v4

## Solution 3

I guess you didn't get the hint. Let's look at `main` a little closer. I split the variables out so each one has their own line.
C++
```int main()
{
int length=0;    // not used
int result;      // not used
int m=0;         // not used
int n;           // passed to convertToWords but never set to a value
int temp;        // assigned but not used otherwise
int num;         // this is used but its value is thrown away

cin>>num;
temp=num;

cout << convertToWords(n) << endl;

return 0;
}```
The problem is none of these variables were used correctly. If I were you, I would pass `num` to `convertWords` instead of `n` because it is assigned a value from user input. There is no need for any of the other variables. This is what I would do :
C++
```int main()
{
int num;
cin>>num;

cout << convertToWords( num ) << endl;

return 0;
}```
Then you get to debug `convertToWords`. Debuggers are a very, very useful tool so you should learn how to use one.