SHARE
SPREAD
HELP

The Tradition of Sharing

Help your friends and juniors by posting answers to the questions that you know. Also post questions that are not available.


To start with, Sr2Jr’s first step is to reduce the expenses related to education. To achieve this goal Sr2Jr organized the textbook’s question and answers. Sr2Jr is community based and need your support to fill the question and answers. The question and answers posted will be available free of cost to all.

 

#
Authors:
Walter Savitch ,kenrick Mock
Chapter:
Function Basics
Exercise:
Programming Projects
Question:8 | ISBN:9780132846813 | Edition: 5

Question

Write a program that outputs all 99 stanzas of the “Ninety-Nine Bottles of Beer on the Wall” song. Your program should print the number of bottles in English, not as a number:

Ninety-nine bottles of beer on the wall,

Ninety-nine bottles of beer,

Take one down, pass it around,

Ninety-eight bottles of beer on the wall.

...

One bottle of beer on the wall,

One bottle of beer,

Take one down, pass it around,

Zero bottles of beer on the wall.

Your program should not use ninety-nine different output statements!



TextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbook

Answer

C++ program code:

//Header file section
#include <iostream>
#include <string>
using namespace std;
//Function definition of numberToWord
string numberToWord(int number)
{
    //Declare variable
    string result;
    // Define arrays for numbers and their 
    //corresponding English words
    string ones[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
    string teens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    string tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
    
    //Verify the number and print the number 
    //of bottles in English words
    
    if (number >= 0 && number < 10)
    {
        result = ones[number];
    }
    else if (number >= 10 && number < 20)
    {
        result = teens[number - 10];
    }
    else if (number >= 20 && number < 100) 
    {
        int tensDigit = number / 10;
        int onesDigit = number % 10;
        result = tens[tensDigit];
        
        if (onesDigit > 0)
        {
            result += "-" + ones[onesDigit];
        }
    }
    
    return result;
}
//Program starts with main() function
int main() 
{
    //Loop for 99 numbers and call the method,numberToWord 
    for (int i = 99; i > 0; i--) 
    {
        string currentBottles = numberToWord(i);
        string nextBottles = numberToWord(i - 1);
        //Display output
        cout << currentBottles << " bottle" << (i == 1 ? "" : "s") << " of beer on the wall," << endl;
        cout << currentBottles << " bottle" << (i == 1 ? "" : "s") << " of beer," << endl;
        cout << "Take one down, pass it around," << endl;
        cout << nextBottles << " bottle" << ((i - 1) == 1 ? "" : "s") << " of beer on the wall." << endl;
        
        cout << endl;  // Add a blank line between stanzas
    }
    
    cout << "Zero bottles of beer on the wall." << endl;
    
    return 0;
}

OUTPUT OF THE PROGRAM CODE:

ninety-nine bottles of beer on the wall,
ninety-nine bottles of beer,
Take one down, pass it around,
ninety-eight bottles of beer on the wall.

ninety-eight bottles of beer on the wall,
ninety-eight bottles of beer,
Take one down, pass it around,
ninety-seven bottles of beer on the wall.

ninety-seven bottles of beer on the wall,
ninety-seven bottles of beer,
Take one down, pass it around,
ninety-six bottles of beer on the wall.

ninety-six bottles of beer on the wall,
ninety-six bottles of beer,
Take one down, pass it around,
ninety-five bottles of beer on the wall.

ninety-five bottles of beer on the wall,
ninety-five bottles of beer,
Take one down, pass it around,
ninety-four bottles of beer on the wall.

ninety-four bottles of beer on the wall,
ninety-four bottles of beer,
Take one down, pass it around,
ninety-three bottles of beer on the wall.

ninety-three bottles of beer on the wall,
ninety-three bottles of beer,
Take one down, pass it around,
ninety-two bottles of beer on the wall.

ninety-two bottles of beer on the wall,
ninety-two bottles of beer,
Take one down, pass it around,
ninety-one bottles of beer on the wall.

ninety-one bottles of beer on the wall,
ninety-one bottles of beer,
Take one down, pass it around,
ninety bottles of beer on the wall.

ninety bottles of beer on the wall,
ninety bottles of beer,
Take one down, pass it around,
eighty-nine bottles of beer on the wall.

eighty-nine bottles of beer on the wall,
eighty-nine bottles of beer,
Take one down, pass it around,
eighty-eight bottles of beer on the wall.

eighty-eight bottles of beer on the wall,
eighty-eight bottles of beer,
Take one down, pass it around,
eighty-seven bottles of beer on the wall.

eighty-seven bottles of beer on the wall,
eighty-seven bottles of beer,
Take one down, pass it around,
eighty-six bottles of beer on the wall.

eighty-six bottles of beer on the wall,
eighty-six bottles of beer,
Take one down, pass it around,
eighty-five bottles of beer on the wall.

eighty-five bottles of beer on the wall,
eighty-five bottles of beer,
Take one down, pass it around,
eighty-four bottles of beer on the wall.

eighty-four bottles of beer on the wall,
eighty-four bottles of beer,
Take one down, pass it around,
eighty-three bottles of beer on the wall.

eighty-three bottles of beer on the wall,
eighty-three bottles of beer,
Take one down, pass it around,
eighty-two bottles of beer on the wall.

eighty-two bottles of beer on the wall,
eighty-two bottles of beer,
Take one down, pass it around,
eighty-one bottles of beer on the wall.

eighty-one bottles of beer on the wall,
eighty-one bottles of beer,
Take one down, pass it around,
eighty bottles of beer on the wall.

eighty bottles of beer on the wall,
eighty bottles of beer,
Take one down, pass it around,
seventy-nine bottles of beer on the wall.

seventy-nine bottles of beer on the wall,
seventy-nine bottles of beer,
Take one down, pass it around,
seventy-eight bottles of beer on the wall.

seventy-eight bottles of beer on the wall,
seventy-eight bottles of beer,
Take one down, pass it around,
seventy-seven bottles of beer on the wall.

seventy-seven bottles of beer on the wall,
seventy-seven bottles of beer,
Take one down, pass it around,
seventy-six bottles of beer on the wall.

seventy-six bottles of beer on the wall,
seventy-six bottles of beer,
Take one down, pass it around,
seventy-five bottles of beer on the wall.

seventy-five bottles of beer on the wall,
seventy-five bottles of beer,
Take one down, pass it around,
seventy-four bottles of beer on the wall.

seventy-four bottles of beer on the wall,
seventy-four bottles of beer,
Take one down, pass it around,
seventy-three bottles of beer on the wall.

seventy-three bottles of beer on the wall,
seventy-three bottles of beer,
Take one down, pass it around,
seventy-two bottles of beer on the wall.

seventy-two bottles of beer on the wall,
seventy-two bottles of beer,
Take one down, pass it around,
seventy-one bottles of beer on the wall.

seventy-one bottles of beer on the wall,
seventy-one bottles of beer,
Take one down, pass it around,
seventy bottles of beer on the wall.

seventy bottles of beer on the wall,
seventy bottles of beer,
Take one down, pass it around,
sixty-nine bottles of beer on the wall.

sixty-nine bottles of beer on the wall,
sixty-nine bottles of beer,
Take one down, pass it around,
sixty-eight bottles of beer on the wall.

sixty-eight bottles of beer on the wall,
sixty-eight bottles of beer,
Take one down, pass it around,
sixty-seven bottles of beer on the wall.

sixty-seven bottles of beer on the wall,
sixty-seven bottles of beer,
Take one down, pass it around,
sixty-six bottles of beer on the wall.

sixty-six bottles of beer on the wall,
sixty-six bottles of beer,
Take one down, pass it around,
sixty-five bottles of beer on the wall.

sixty-five bottles of beer on the wall,
sixty-five bottles of beer,
Take one down, pass it around,
sixty-four bottles of beer on the wall.

sixty-four bottles of beer on the wall,
sixty-four bottles of beer,
Take one down, pass it around,
sixty-three bottles of beer on the wall.

sixty-three bottles of beer on the wall,
sixty-three bottles of beer,
Take one down, pass it around,
sixty-two bottles of beer on the wall.

sixty-two bottles of beer on the wall,
sixty-two bottles of beer,
Take one down, pass it around,
sixty-one bottles of beer on the wall.

sixty-one bottles of beer on the wall,
sixty-one bottles of beer,
Take one down, pass it around,
sixty bottles of beer on the wall.

sixty bottles of beer on the wall,
sixty bottles of beer,
Take one down, pass it around,
fifty-nine bottles of beer on the wall.

fifty-nine bottles of beer on the wall,
fifty-nine bottles of beer,
Take one down, pass it around,
fifty-eight bottles of beer on the wall.

fifty-eight bottles of beer on the wall,
fifty-eight bottles of beer,
Take one down, pass it around,
fifty-seven bottles of beer on the wall.

fifty-seven bottles of beer on the wall,
fifty-seven bottles of beer,
Take one down, pass it around,
fifty-six bottles of beer on the wall.

fifty-six bottles of beer on the wall,
fifty-six bottles of beer,
Take one down, pass it around,
fifty-five bottles of beer on the wall.

fifty-five bottles of beer on the wall,
fifty-five bottles of beer,
Take one down, pass it around,
fifty-four bottles of beer on the wall.

fifty-four bottles of beer on the wall,
fifty-four bottles of beer,
Take one down, pass it around,
fifty-three bottles of beer on the wall.

fifty-three bottles of beer on the wall,
fifty-three bottles of beer,
Take one down, pass it around,
fifty-two bottles of beer on the wall.

fifty-two bottles of beer on the wall,
fifty-two bottles of beer,
Take one down, pass it around,
fifty-one bottles of beer on the wall.

fifty-one bottles of beer on the wall,
fifty-one bottles of beer,
Take one down, pass it around,
fifty bottles of beer on the wall.

fifty bottles of beer on the wall,
fifty bottles of beer,
Take one down, pass it around,
forty-nine bottles of beer on the wall.

forty-nine bottles of beer on the wall,
forty-nine bottles of beer,
Take one down, pass it around,
forty-eight bottles of beer on the wall.

forty-eight bottles of beer on the wall,
forty-eight bottles of beer,
Take one down, pass it around,
forty-seven bottles of beer on the wall.

forty-seven bottles of beer on the wall,
forty-seven bottles of beer,
Take one down, pass it around,
forty-six bottles of beer on the wall.

forty-six bottles of beer on the wall,
forty-six bottles of beer,
Take one down, pass it around,
forty-five bottles of beer on the wall.

forty-five bottles of beer on the wall,
forty-five bottles of beer,
Take one down, pass it around,
forty-four bottles of beer on the wall.

forty-four bottles of beer on the wall,
forty-four bottles of beer,
Take one down, pass it around,
forty-three bottles of beer on the wall.

forty-three bottles of beer on the wall,
forty-three bottles of beer,
Take one down, pass it around,
forty-two bottles of beer on the wall.

forty-two bottles of beer on the wall,
forty-two bottles of beer,
Take one down, pass it around,
forty-one bottles of beer on the wall.

forty-one bottles of beer on the wall,
forty-one bottles of beer,
Take one down, pass it around,
forty bottles of beer on the wall.

forty bottles of beer on the wall,
forty bottles of beer,
Take one down, pass it around,
thirty-nine bottles of beer on the wall.

thirty-nine bottles of beer on the wall,
thirty-nine bottles of beer,
Take one down, pass it around,
thirty-eight bottles of beer on the wall.

thirty-eight bottles of beer on the wall,
thirty-eight bottles of beer,
Take one down, pass it around,
thirty-seven bottles of beer on the wall.

thirty-seven bottles of beer on the wall,
thirty-seven bottles of beer,
Take one down, pass it around,
thirty-six bottles of beer on the wall.

thirty-six bottles of beer on the wall,
thirty-six bottles of beer,
Take one down, pass it around,
thirty-five bottles of beer on the wall.

thirty-five bottles of beer on the wall,
thirty-five bottles of beer,
Take one down, pass it around,
thirty-four bottles of beer on the wall.

thirty-four bottles of beer on the wall,
thirty-four bottles of beer,
Take one down, pass it around,
thirty-three bottles of beer on the wall.

thirty-three bottles of beer on the wall,
thirty-three bottles of beer,
Take one down, pass it around,
thirty-two bottles of beer on the wall.

thirty-two bottles of beer on the wall,
thirty-two bottles of beer,
Take one down, pass it around,
thirty-one bottles of beer on the wall.

thirty-one bottles of beer on the wall,
thirty-one bottles of beer,
Take one down, pass it around,
thirty bottles of beer on the wall.

thirty bottles of beer on the wall,
thirty bottles of beer,
Take one down, pass it around,
twenty-nine bottles of beer on the wall.

twenty-nine bottles of beer on the wall,
twenty-nine bottles of beer,
Take one down, pass it around,
twenty-eight bottles of beer on the wall.

twenty-eight bottles of beer on the wall,
twenty-eight bottles of beer,
Take one down, pass it around,
twenty-seven bottles of beer on the wall.

twenty-seven bottles of beer on the wall,
twenty-seven bottles of beer,
Take one down, pass it around,
twenty-six bottles of beer on the wall.

twenty-six bottles of beer on the wall,
twenty-six bottles of beer,
Take one down, pass it around,
twenty-five bottles of beer on the wall.

twenty-five bottles of beer on the wall,
twenty-five bottles of beer,
Take one down, pass it around,
twenty-four bottles of beer on the wall.

twenty-four bottles of beer on the wall,
twenty-four bottles of beer,
Take one down, pass it around,
twenty-three bottles of beer on the wall.

twenty-three bottles of beer on the wall,
twenty-three bottles of beer,
Take one down, pass it around,
twenty-two bottles of beer on the wall.

twenty-two bottles of beer on the wall,
twenty-two bottles of beer,
Take one down, pass it around,
twenty-one bottles of beer on the wall.

twenty-one bottles of beer on the wall,
twenty-one bottles of beer,
Take one down, pass it around,
twenty bottles of beer on the wall.

twenty bottles of beer on the wall,
twenty bottles of beer,
Take one down, pass it around,
nineteen bottles of beer on the wall.

nineteen bottles of beer on the wall,
nineteen bottles of beer,
Take one down, pass it around,
eighteen bottles of beer on the wall.

eighteen bottles of beer on the wall,
eighteen bottles of beer,
Take one down, pass it around,
seventeen bottles of beer on the wall.

seventeen bottles of beer on the wall,
seventeen bottles of beer,
Take one down, pass it around,
sixteen bottles of beer on the wall.

sixteen bottles of beer on the wall,
sixteen bottles of beer,
Take one down, pass it around,
fifteen bottles of beer on the wall.

fifteen bottles of beer on the wall,
fifteen bottles of beer,
Take one down, pass it around,
fourteen bottles of beer on the wall.

fourteen bottles of beer on the wall,
fourteen bottles of beer,
Take one down, pass it around,
thirteen bottles of beer on the wall.

thirteen bottles of beer on the wall,
thirteen bottles of beer,
Take one down, pass it around,
twelve bottles of beer on the wall.

twelve bottles of beer on the wall,
twelve bottles of beer,
Take one down, pass it around,
eleven bottles of beer on the wall.

eleven bottles of beer on the wall,
eleven bottles of beer,
Take one down, pass it around,
ten bottles of beer on the wall.

ten bottles of beer on the wall,
ten bottles of beer,
Take one down, pass it around,
nine bottles of beer on the wall.

nine bottles of beer on the wall,
nine bottles of beer,
Take one down, pass it around,
eight bottles of beer on the wall.

eight bottles of beer on the wall,
eight bottles of beer,
Take one down, pass it around,
seven bottles of beer on the wall.

seven bottles of beer on the wall,
seven bottles of beer,
Take one down, pass it around,
six bottles of beer on the wall.

six bottles of beer on the wall,
six bottles of beer,
Take one down, pass it around,
five bottles of beer on the wall.

five bottles of beer on the wall,
five bottles of beer,
Take one down, pass it around,
four bottles of beer on the wall.

four bottles of beer on the wall,
four bottles of beer,
Take one down, pass it around,
three bottles of beer on the wall.

three bottles of beer on the wall,
three bottles of beer,
Take one down, pass it around,
two bottles of beer on the wall.

two bottles of beer on the wall,
two bottles of beer,
Take one down, pass it around,
one bottle of beer on the wall.

one bottle of beer on the wall,
one bottle of beer,
Take one down, pass it around,
zero bottles of beer on the wall.

Zero bottles of beer on the wall.

 

0 0

Discussions

Post the discussion to improve the above solution.