Skip to content

Instantly share code, notes, and snippets.

@itayB
Created September 26, 2016 15:03
Show Gist options
  • Select an option

  • Save itayB/6ccf8de873eff0be1fdae98a8d405dea to your computer and use it in GitHub Desktop.

Select an option

Save itayB/6ccf8de873eff0be1fdae98a8d405dea to your computer and use it in GitHub Desktop.
English Int - Given any integer, print an English phrase that describes the integer
#include <iostream>
#include <map>
using namespace std;
static map<int, string> text {
{0, ""},
{1, "one"},
{2, "two"},
{3, "three"},
{4, "four"},
{5, "five"},
{6, "six"},
{7, "seven"},
{8, "eight"},
{9, "nine"},
{10, "ten"},
{11, "eleven"},
{12, "twelfth"},
{13, "thirteen"},
{14, "fourteen"},
{15, "fifteen"},
{16, "sixteen"},
{17, "seventeen"},
{18, "eighteen"},
{19, "nineteen"},
{20, "twenty"},
{30, "thirty"},
{40, "forty"},
{50, "fifty"},
{60, "sixty"},
{70, "seventy"},
{80, "eighty"},
{90, "tinty"},
{1000, "thousand"},
{1000000, "million"},
{1000000000, "billion"}
};
string numberToText(int number) {
string res = "";
if (number >= 1000) {
int counter = 1;
int tmp = number;
while (tmp >= 1000) {
counter *= 1000;
tmp /= 1000;
}
return numberToText(number / counter) + " " + text[counter] + (number % counter > 0 ? " " + numberToText(number % counter) : "");
}
if (number > 99) {
int hundred = number / 100; // should be between 1-9
res += text[hundred] + " hundred";
return res + (number % 100 ? " " + numberToText(number % 100) : "");
}
if (number > 19) {
int tens = number / 10; // should be between 1-9
res += text[tens * 10];
return res + " " + (number % 10 > 0 ? numberToText(number % 10) : "");
}
if (number == 0)
return "zero";
//number < 20
res += text[number];
return res;
}
int main() {
int number = 1010054123;
cout << number << ": " << numberToText(number) << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment