I am studying in LA,PCC college.Now we use book Problem Solving with C++ 6th edition,Author:Walter Savitch.in page 244 problem 13:
write a program that outputs the lyrics for the song "Ninety-nine Bottles of Beer on the wall".You should print the number of bottles in English,not as a number.EX:
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.
Design your program with a function that takes as an argument an Integer between 0 and 99 and returns a string that contains the integer value in English.Your program should not have 100 different if-else statement!Instead,use % and / to extract the tens and ones digits to construct the English string.
And this is my code(I think it is really really bad !!!!But it is absolutely correct!)
I want to make it more easy and small.So can I use function call like this:Code:#include <iostream> using namespace std; int main() { cout<<"Welcom to 99 Bottles of Beer on the wall!\n" <<"Please enter the number you want and we will give you the corresponding lyric:"; int num; cin>>num; if(num<=99&&num>0) { int x,y; x=num/10; y=num%10; switch(num) { case 1:cout<<"One"; break; case 2:cout<<"Two"; break; case 3:cout<<"Three"; break; case 4:cout<<"Four"; break; case 5:cout<<"Five"; break; case 6:cout<<"Six"; break; case 7:cout<<"Seven"; break; case 8:cout<<"Eight"; break; case 9:cout<<"Nine"; break; } switch(num) { case 10:cout<<"Ten"; break; case 11:cout<<"Eleven"; break; case 12:cout<<"Twelve"; break; case 13:cout<<"Thirteen"; break; case 14:cout<<"Fourteen"; break; case 15:cout<<"Fifteen"; break; case 16:cout<<"Sixteen"; break; case 17:cout<<"Seventeen"; break; case 18:cout<<"Eighteen"; break; case 19:cout<<"Nineteen"; break;} switch(x) { case 2:cout<<"Twenty"; break; case 3:cout<<"Thirty"; break; case 4:cout<<"Forty"; break; case 5:cout<<"Fifty"; break; case 6:cout<<"Sixty"; break; case 7:cout<<"Seventy"; break; case 8:cout<<"Eighty"; break; case 9:cout<<"Ninety"; break; } if(num>20) { switch(y) { case 1:cout<<"-one"; break; case 2:cout<<"-two"; break; case 3:cout<<"-three"; break; case 4:cout<<"-four"; break; case 5:cout<<"-five"; break; case 6:cout<<"-six"; break; case 7:cout<<"-seven"; break; case 8:cout<<"-eight"; break; case 9:cout<<"-nine"; break; }} if(num==1) cout<<" bottle of beer on the wall,\n"; else cout<<" bottles of beer on the wall,\n"; switch(num) { case 1:cout<<"One"; break; case 2:cout<<"Two"; break; case 3:cout<<"Three"; break; case 4:cout<<"Four"; break; case 5:cout<<"Five"; break; case 6:cout<<"Six"; break; case 7:cout<<"Seven"; break; case 8:cout<<"Eight"; break; case 9:cout<<"Nine"; break; } switch(num) { case 10:cout<<"Ten"; break; case 11:cout<<"Eleven"; break; case 12:cout<<"Twelve"; break; case 13:cout<<"Thirteen"; break; case 14:cout<<"Fourteen"; break; case 15:cout<<"Fifteen"; break; case 16:cout<<"Sixteen"; break; case 17:cout<<"Seventeen"; break; case 18:cout<<"Eighteen"; break; case 19:cout<<"Nineteen"; break;} switch(x) { case 2:cout<<"Twenty"; break; case 3:cout<<"Thirty"; break; case 4:cout<<"Forty"; break; case 5:cout<<"Fifty"; break; case 6:cout<<"Sixty"; break; case 7:cout<<"Seventy"; break; case 8:cout<<"Eighty"; break; case 9:cout<<"Ninety"; break; } if(num>20) { switch(y) { case 1:cout<<"-one"; break; case 2:cout<<"-two"; break; case 3:cout<<"-three"; break; case 4:cout<<"-four"; break; case 5:cout<<"-five"; break; case 6:cout<<"-six"; break; case 7:cout<<"-seven"; break; case 8:cout<<"-eight"; break; case 9:cout<<"-nine"; break; }} if(num==1) cout<<" bottle of beer,\n" <<"Take one down,pass it around,\n"; else cout<<" bottles of beer,\n" <<"Take one down,pass it around,\n"; int p,q; p=(num-1)/10; q=(num-1)%10; switch(num-1) { case 0:cout<<"Zero"; break; case 1:cout<<"One"; break; case 2:cout<<"Two"; break; case 3:cout<<"Three"; break; case 4:cout<<"Four"; break; case 5:cout<<"Five"; break; case 6:cout<<"Six"; break; case 7:cout<<"Seven"; break; case 8:cout<<"Eight"; break; case 9:cout<<"Nine"; break; } switch(num-1) { case 10:cout<<"Ten"; break; case 11:cout<<"Eleven"; break; case 12:cout<<"Twelve"; break; case 13:cout<<"Thirteen"; break; case 14:cout<<"Fourteen"; break; case 15:cout<<"Fifteen"; break; case 16:cout<<"Sixteen"; break; case 17:cout<<"Seventeen"; break; case 18:cout<<"Eighteen"; break; case 19:cout<<"Nineteen"; break;} switch(p) { case 2:cout<<"Twenty"; break; case 3:cout<<"Thirty"; break; case 4:cout<<"Forty"; break; case 5:cout<<"Fifty"; break; case 6:cout<<"Sixty"; break; case 7:cout<<"Seventy"; break; case 8:cout<<"Eighty"; break; case 9:cout<<"Ninety"; break; } if(num-1>20) { switch(q) { case 1:cout<<"-one"; break; case 2:cout<<"-two"; break; case 3:cout<<"-three"; break; case 4:cout<<"-four"; break; case 5:cout<<"-five"; break; case 6:cout<<"-six"; break; case 7:cout<<"-seven"; break; case 8:cout<<"-eight"; break; case 9:cout<<"-nine"; break; }} if(num==2) cout<<" bottle of beer on the wall.\n"; else cout<<" bottles of beer on the wall.\n"; } else cout<<"Invalid number!"<<endl; system("pause"); return 0; }
int num;
cin>>num;
switch(num)
{
case 1:
return "One";
break;
case 2:
return "Two";
break;
..........}
Because in my code there are many things are the same.
And also what is the type for "some words"?Is it string?
Can I let some variable (EX:X) equals to a string?
Thanks !
Super Beginner