Hello all!
I am having trouble writing this code where I am supposed to take integers and output them as strings. When i try a number like 67 it outputs it correctly like sixty seven. However, when i try 467 it only outputs four hundred sixty. Suggestions appreciated!
#include <iostream>
#include <string>
using namespace std;
string n2w1to999(int digit);
string n2w1to9(int digit);
int main ()
{
int number;
int newnumber;
string words;
cout << "Input:" ;
cin >> number ;
cout << "Output:";
if (number == 0)
{
words = "zero" ;
cout << words << endl ;
}
if (number > 999999999)
{
words = "Error" ;
cout << words << endl;
}
else
{
if (number > 999999 && number <= 999999999 )
{
newnumber = number/1000000 ;
words = n2w1to999(newnumber);
cout << words << "million " ;
number = number - newnumber*1000000 ;
}
if (number > 999 && number <= 999999 )
{
newnumber = number/1000 ;
words = n2w1to999(newnumber);
cout << words << "thousand " ;
number = number - newnumber*1000 ;
}
if (number > 9 && number <= 999)
{
words = n2w1to999( number);
cout << words << endl ;
}
if (number > 0 && number <= 9)
{
words = n2w1to9(number) ;
cout << words << endl;
}
}
}
string n2w1to9(int digit)
{
string words2 ;
if (digit == 1)
{
words2 = "one " ;
}
if (digit == 2)
{
words2 = "two " ;
}
if (digit == 3)
{
words2 = "three " ;
}
if (digit == 4)
{
words2 = "four " ;
}
if (digit == 5)
{
words2 = "five " ;
}
if (digit == 6)
{
words2 = "six " ;
}
if (digit == 7)
{
words2 = "seven " ;
}
if (digit == 8)
{
words2 = "eight " ;
}
if (digit == 9)
{
words2 = "nine " ;
if (digit == 0)
{
words2 = "" ;
}
}
return words2;
}
string n2w1to999(int digit)
{
int residual;
int number;
string words1;
if (digit>100)
{
number = digit/100;
words1 = n2w1to9(number) + "hundred " ;
residual = digit - (number * 100);
}
else
{
residual = digit;
}
if (residual < 100 && residual > 19)
{
if (residual < 100 && residual > 89)
{
words1 += "ninety " ;
residual = digit - 90;
}
if (residual < 90 && residual > 79)
{
words1 += "eighty " ;
residual = digit - 80 ;
}
if (residual < 80 && residual > 69)
{
words1 += "seventy " ;
residual = digit - 70;
}
if (residual < 70 && residual > 59)
{
words1 += "sixty " ;
residual = digit - 60;
}
if (residual < 60 && residual > 49)
{
words1 += "fifty " ;
residual = digit - 50;
}
if (residual < 50 && residual > 39)
{
words1 += "forty " ;
residual = digit - 40;
}
if (residual < 40 && residual > 29)
{
words1 += "thirty " ;
residual = digit - 30 ;
}
if (residual < 30 && residual > 19)
{
words1 += "twenty " ;
residual = digit - 20;
}
}
if (residual == 19)
{
words1 += "nineteen " ;
}
if (residual == 18)
{
words1 += "eighteen " ;
}
if (residual == 17)
{
words1 += "seventeen " ;
}
if (residual == 16)
{
words1 += "sixteen " ;
}
if (residual == 15)
{
words1 += "fifteen " ;
}
if (residual == 14)
{
words1 += "fourteen " ;
}
if (residual == 13)
{
words1 += "thirteen " ;
}
if (residual == 12)
{
words1 += "twelve " ;
}
if (residual == 11)
{
words1 += "eleven " ;
}
if (residual == 10)
{
words1 += "ten " ;
}
if (residual > 0 && residual <= 9)
{
words1 += n2w1to9(residual) ;
}
return words1;
}