Thread: Jumping into C++ - Chapter 7 - Practice problem 1

  1. #1
    Registered User
    Join Date
    Sep 2017
    Posts
    2

    Jumping into C++ - Chapter 7 - Practice problem 1

    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;
    }

  2. #2
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,738
    May I suggest an array or two to hold all those different strings. Printing them would become simpler, you would just use the division and modulo results as indices (not exactly, leaving the details as an exercise).
    Devoted my life to programming...

  3. #3
    Registered User
    Join Date
    Sep 2017
    Posts
    2
    Thanks for the suggestion. To be honest I just started learning c++ and I don't know anything about arrays yet. I did this exercise with the little knowledge I have of the language. Thanks anyway; it may be helpful for someone else or for me in the future.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Jumping into C++ : Chapter 6 Practice Problem 2
    By Markkusz in forum C++ Programming
    Replies: 3
    Last Post: 10-09-2015, 08:26 AM
  2. Jumping into c++ practice problem poker chapter 9
    By menkle in forum C++ Programming
    Replies: 2
    Last Post: 09-06-2015, 02:43 PM
  3. Linked Lists Chapter 15 Practice Problem 1 Jumping Into C++
    By ArtemisFowl2nd in forum C++ Programming
    Replies: 34
    Last Post: 04-30-2014, 12:59 PM
  4. Jumping Into C++ Chapter 14 Practice Problem 1
    By ArtemisFowl2nd in forum C++ Programming
    Replies: 5
    Last Post: 04-16-2014, 09:36 PM
  5. Replies: 2
    Last Post: 02-24-2014, 05:51 PM

Tags for this Thread