Answer:
Explanation:
// Include the required
// header files.
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
#include <string>
// Use the
// standard namespace.
using namespace std;
// Define the function NoDuplicates(),
// to check whether a value is already
// present in an array or not.
int NoDuplicates(int arr[], int size, int val)
{
// Run the loop to
// traverse the array.
for(int i=0; i<size; i++)
{
// If the value is already present
// in the array, return 0.
if(arr[i] == val)
{
return 0;
}
}
// Otherwise, return 1.
return 1;
}
// Define the function getLottoPicks().
void getLottoPicks(int UserTicket[])
{
int currNum;
//
// Run the oop to get 7
// numbers from the user.
for(int i=0; i<7; i++)
{
// Prompt the user
// to enter the number.
cout << "Please enter number "<<i+1<<":";
// Read and store
// the number.
cin >> currNum;
// Run the loop till the
// entered number is valid.
while(true)
{
// If the number is out of range,
// display an error message.
if(currNum>40 || currNum<1)
{
cout << "The number must between 1 and 40. ";
}
// Otherwise, if the number is
// already present in the array,
// display an error message.
else if(NoDuplicates(UserTicket, i, currNum) == 0)
{
cout << "No duplicate numbers are accepted. ";
}
//Otherwise if the number is valid,
// break out of the loop.
else
{
break;
}
// If the number was invalid,
// prompt the user to enter the number again.
cout << "Please enter another number:"<<endl;
cin >> currNum;
}
// Store the number in the array.
UserTicket[i] = currNum;
}
}
// Define the function GenWinNums().
void GenWinNums(int WinningNums[7])
{
int currNum;
// Run the loop to
// generate 7 numbers.
for(int i=0; i<7; i++)
{
// Generate a random number
// in the range 1-40.
currNum = (rand()%40) + 1;
//Run the loop till the
// generated number is valid.
while(NoDuplicates(WinningNums, i, currNum) == 0)
{
// If the generated number was
// a duplicate, generate another number.
currNum = (rand()%40) + 1;
}
// Store the number in the array.
WinningNums[i] = currNum;
}
}
// Define the function getWinnings().
string getWinnings(int numMatches)
{
// Return the winnings as
// per the number of matches.
switch(numMatches)
{
case 0:
case 1:
case 2:
return "SORRY NOTHING";
case 3:
return "FREE TICKET";
case 4:
return "NOT BAD - $100";
case 5:
return "LUCKY YOU! - $5,000";
case 6:
return "GREAT! - $100,000";
case 7:
return "JACKPOT - 1 MILLION";
}
return "Invalid Matches";
}
// Define the function displayResults().
void displayResults(string name, int UserTicket[], int WinningNums[])
{
int numMatches = 0;
string winnings;
// Run the loop to convert
// the name to uppercase.
for(int i=0; i<name.size(); i++)
{
name[i] = toupper(name[i]);
}
// Run the loop to find
// the number of matches.
for(int i=0; i<7; i++)
{
for(int j=0; j<7; j++)
{
if(UserTicket[i] == WinningNums[j])
{
numMatches++;
break;
}
}
}
// Get the winnings as per
// the number of matches.
winnings = getWinnings(numMatches);
// Display the results.
cout << endl
<< name << "'s LOTTO RESULTS" << endl;
cout << "------------------------"<<endl;
cout << "WINNING TICKET NUMBERS:";
// Run the loop to display
// the winning numbers.
for(int i=0; i<7; i++)
{
cout << setw(3) << WinningNums[i];
}
cout << endl;
cout << setw(13) << name << "'s TICKET:";
// Run the loop to display
// the user ticket.
for(int i=0; i<7; i++)
{
cout << setw(3) << UserTicket[i];
}
cout << endl;
cout << "RESULTS:"<<endl;
cout << "--------"<<endl;
cout << "Number Matches: " << numMatches << endl;
cout << "Winnings : " << winnings << endl
<< endl;
}
// Define the
// function menu().
void menu()
{
cout << "LITTLETON CITY LOTTO MODEL:"<<endl
<<"---------------------------"<<endl
<<"1) Play Lotto"<<endl
<<"q) Quit Program"<<endl
<<"Please make a selection:"<<endl;
}
// Define the
// main() function.
int main() {
// Set the random seed.
srand(time(NULL));
// Define an array to store
// the user ticket.
int UserTicket[7];
// Define an array to
// store the winning numbers.
int WinningNums[7];
char userChoice = '0';
string name;
// Run the loop till
// the user wants to quit.
while(userChoice != 'q')
{
// Display the menu.
menu();
// Read and store
// the user choice.
cin >> userChoice;
// Perform the required action
// as per the user choice.
switch(userChoice)
{
case '1':
cout << "Please enter your name:"
<< endl;
cin >> name;
getLottoPicks(UserTicket);
GenWinNums(WinningNums);
displayResults(name, UserTicket, WinningNums);
break;
// If the user chooses to quit,
// display a message.
case 'q':
cout << "Thank you for"
<<" using the program."<<endl;
break;
// Display an error message
// for invalid selection.
default:
cout << "Invalid selection."
<< endl;
}
}
// Return from
// the main() function.
return 0;
}