// words for digits // in: unsigned long (ul) // out: string & #include <string> #include <vector> typedef unsigned long ul; std::vector<std::string> const ones{"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; std::vector<std::string> const teens{"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}; std::vector<std::string> const tens{"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}; std::string wordsForDigits(ul digits) { if (digits < 10) { return ones[digits]; } else if (digits < 20) { return teens[digits - 10]; } else if (digits < 100) { return tens[digits / 10] + ((digits % 10 != 0) ? " " + wordsForDigits(digits % 10) : ""); } else if (digits < 1'000) { return wordsForDigits(digits / 100) + " hundred" + ((digits % 100 != 0) ? " " + wordsForDigits(digits % 100) : ""); } else if (digits < 1'000'000) { return wordsForDigits(digits / 1'000) + " thousand" + ((digits % 1000 != 0) ? " " + wordsForDigits(digits % 1000) : ""); } else if (digits < 1'000'000'000) { return wordsForDigits(digits / 1'000'000) + " million" + ((digits % 1'000'000 != 0) ? " " + wordsForDigits(digits % 1'000'000) ▏ : ""); } else if (digits < 1'000'000'000'000) { return wordsForDigits(digits / 1'000'000'000) + " billion" + ((digits % 1'000'000'000 != 0) ? " " + wordsForDigits(digits % 1'000'000'000) : ""); } return "error"; } void wordsForDigitsHelper(std::string &text, ul digits) { ▏ text = wordsForDigits(digits); }