This is a possible solution I came about to turn numbers (from 1 to 99) into English text.
Code:
// This program converts numbers from 1 to 99 to English text.
#include <iostream>
using namespace std;
// Functions
int checkHowManyDigits(int number);
void printNumber(int numberOfDigits,int number);
void printOneDigit(int number);
void printTwoDigits(int number);
void printTenToNineteen(int number);
int main()
{
// Get input from user
cout << "Enter a number: ";
int number;
cin >> number;
cout << '\n';
// Check how many digits the number has
int numberOfDigits = checkHowManyDigits(number);
// Print out the number
printNumber(numberOfDigits, number);
cout << '\n';
return 0;
}
int checkHowManyDigits(int number)
{
if (number / 10 == 0) // It means the number is smaller than ten and so has only one digit
{
return 1;
}
else
{
return 2;
}
}
void printNumber(int numberOfDigits,int number)
{
if (numberOfDigits == 1)
{
printOneDigit(number);
}
else if (numberOfDigits == 2)
{
printTwoDigits(number);
}
}
void printOneDigit(int number)
{
if (number == 0)
cout << "Zero";
else if (number == 1)
cout << "One";
else if (number == 2)
cout << "Two";
else if (number == 3)
cout << "Three";
else if (number == 4)
cout << "Four";
else if (number == 5)
cout << "Five";
else if (number == 6)
cout << "Six";
else if (number == 7)
cout << "Seven";
else if (number == 8)
cout << "Eight";
else if (number == 9)
cout << "Nine";
}
void printTwoDigits(int number)
{
if (number / 10 == 1) // It means the number is between 10 and 19
{
printTenToNineteen(number);
}
else if (number / 10 == 2)
{
cout << "Twenty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 3)
{
cout << "Thirty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 4)
{
cout << "Forty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 5)
{
cout << "Fifty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 6)
{
cout << "Sixty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 7)
{
cout << "Seventy";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 8)
{
cout << "Eighty";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
else if (number / 10 == 9)
{
cout << "Ninety";
int secondDigit = number % 10;
if (secondDigit != 0)
{
cout << "-";
printOneDigit(secondDigit);
}
}
}
void printTenToNineteen(int number)
{
if (number == 10)
cout << "Ten" << endl;
else if (number == 11)
cout << "Eleven" << endl;
else if (number == 12)
cout << "Twelve" << endl;
else if (number == 13)
cout << "Thirteen" << endl;
else if (number == 14)
cout << "Fourteen" << endl;
else if (number == 15)
cout << "Fifteen" << endl;
else if (number == 16)
cout << "Sixteen" << endl;
else if (number == 17)
cout << "Seventeen" << endl;
else if (number == 18)
cout << "Eighteen" << endl;
else if (number == 19)
cout << "Nineteen" << endl;
}