C++ 比较彩票游戏中的数组值
C++ Comparing Array Values in Lottery Game
我正在制作一个彩票程序,我正在尝试制作一个函数来检查有多少用户的号码与中奖号码相同,并写出具有相同号码的不同奖励。代码编译得很好。我只是遇到创建函数以及在其中做什么的问题。
基本上,检查他们是否赢得了乐透游戏中的任何奖品。检查 UserTicket 数组中的每个数字以查看该数字是否在 WinningNums 数组中并计算匹配的数字。
显示:JACKPOT - 如果所有 7 个号码都正确,则为 100 万
显示:太棒了! - 100,000 美元,如果 6 个数字是正确的
显示:幸运的你! - 5,000 美元,如果 5 个数字是正确的
显示:不错 - 如果 4 个号码正确,则 100 美元
显示:FREE TICKET if 3 numbers are correct
显示:如果 2 个或更少的数字是正确的,则没有任何意义
我在这方面遇到了麻烦,我是 C++ 的新手,而且我只编写了几个月的代码。将不胜感激!
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
void getLottoPicks(int userNums[], int size);
void genWinNums(int winNums[], int size);
void checkNums(int userNums[], int winNums[], int size);
int main()
{
const int size = 7;
int UserTicket[size];
int WinningNums[size];
char selection;
string name;
do
{
cout << "LITTLETON CITY LOTTO MODEL: " << endl;
cout << "---------------------------" << endl;
cout << "1) Play Lotto" << endl;
cout << "q) Quit Program" << endl;
cout << "Please make a selection : " << endl;
cin >> selection;
if (selection == '1')
{
cout << "Please enter your name: " << endl;
cin.ignore();
getline(cin, name);
getLottoPicks(UserTicket, size);
genWinNums(WinningNums, size);
checkNums(int userNums[], int winNums[], int size);
cout << name << "'s LOTTO RESULTS" << endl;
cout << "----------------------" << endl;
cout << "WINNING TICKET NUMBERS : " << endl;
for(int i = 0; i < size; i++)
{
cout << WinningNums[i] << " ";
}
cout << endl;
cout << name << "'s TICKET : " << endl;
for(int i = 0; i < size; i++)
{
cout << UserTicket[i] << " ";
}
cout << endl;
}
else if (selection == 'q')
{
cout << "You have chosen to quit the program. Thank you for
using!" << endl;
}
else
{
cout << "Invalid selection. Please try again." << endl;
}
} while (selection != 'q');
return 0;
}
void getLottoPicks(int userNums[], int size)
{
for (int times = 0; times < size; times++)
{
int input;
cout << "selection #" << times + 1 << ": " << endl;
cin >> input;
bool isNotDuplicate = true;
for (int i = 0; i < times; i++)
{
if (userNums[i] == input)
{
isNotDuplicate = false;
}
}
if (isNotDuplicate == true)
{
userNums[times] = input;
}
else
{
cout << "You already picked this number. Please enter a different number: " <<
endl;
times--;
}
}
}
void genWinNums(int winNums[], int size)
{
srand((unsigned int)time(NULL));
for (int times = 0; times < size; times++)
{
int i;
bool isNotDuplicate = true;
while (isNotDuplicate)
{
isNotDuplicate = false;
i = 1 + rand() % 40;
for (int j = 0; j < times; j++)
{
if (i == winNums[j])
{
isNotDuplicate = true;
}
}
}
winNums[times] = i;
}
}
void checkNums(int userNums[], int winNums[], int size)
{
}
你应该做 2 个循环,像这样:
int checkNums(int userNums[], int winNums[], int size)
{
int nums = 0;
for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
if(userNums[i] == winNums[j])
nums++;
return nums;
}
这个函数会return有多少个数字是正确的
如果您不关心顺序并且您确定没有数字可以在同一个数组中出现 2 次,则此方法有效。
如果您也想查看订单:
int checkNums(int userNums[], int winNums[], int size)
{
int nums = 0;
for(int i = 0; i < size; i++)
if(userNums[i] == winNums[i])
nums++;
return nums;
}
我正在制作一个彩票程序,我正在尝试制作一个函数来检查有多少用户的号码与中奖号码相同,并写出具有相同号码的不同奖励。代码编译得很好。我只是遇到创建函数以及在其中做什么的问题。
基本上,检查他们是否赢得了乐透游戏中的任何奖品。检查 UserTicket 数组中的每个数字以查看该数字是否在 WinningNums 数组中并计算匹配的数字。
显示:JACKPOT - 如果所有 7 个号码都正确,则为 100 万 显示:太棒了! - 100,000 美元,如果 6 个数字是正确的 显示:幸运的你! - 5,000 美元,如果 5 个数字是正确的 显示:不错 - 如果 4 个号码正确,则 100 美元 显示:FREE TICKET if 3 numbers are correct 显示:如果 2 个或更少的数字是正确的,则没有任何意义
我在这方面遇到了麻烦,我是 C++ 的新手,而且我只编写了几个月的代码。将不胜感激!
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>
using namespace std;
void getLottoPicks(int userNums[], int size);
void genWinNums(int winNums[], int size);
void checkNums(int userNums[], int winNums[], int size);
int main()
{
const int size = 7;
int UserTicket[size];
int WinningNums[size];
char selection;
string name;
do
{
cout << "LITTLETON CITY LOTTO MODEL: " << endl;
cout << "---------------------------" << endl;
cout << "1) Play Lotto" << endl;
cout << "q) Quit Program" << endl;
cout << "Please make a selection : " << endl;
cin >> selection;
if (selection == '1')
{
cout << "Please enter your name: " << endl;
cin.ignore();
getline(cin, name);
getLottoPicks(UserTicket, size);
genWinNums(WinningNums, size);
checkNums(int userNums[], int winNums[], int size);
cout << name << "'s LOTTO RESULTS" << endl;
cout << "----------------------" << endl;
cout << "WINNING TICKET NUMBERS : " << endl;
for(int i = 0; i < size; i++)
{
cout << WinningNums[i] << " ";
}
cout << endl;
cout << name << "'s TICKET : " << endl;
for(int i = 0; i < size; i++)
{
cout << UserTicket[i] << " ";
}
cout << endl;
}
else if (selection == 'q')
{
cout << "You have chosen to quit the program. Thank you for
using!" << endl;
}
else
{
cout << "Invalid selection. Please try again." << endl;
}
} while (selection != 'q');
return 0;
}
void getLottoPicks(int userNums[], int size)
{
for (int times = 0; times < size; times++)
{
int input;
cout << "selection #" << times + 1 << ": " << endl;
cin >> input;
bool isNotDuplicate = true;
for (int i = 0; i < times; i++)
{
if (userNums[i] == input)
{
isNotDuplicate = false;
}
}
if (isNotDuplicate == true)
{
userNums[times] = input;
}
else
{
cout << "You already picked this number. Please enter a different number: " <<
endl;
times--;
}
}
}
void genWinNums(int winNums[], int size)
{
srand((unsigned int)time(NULL));
for (int times = 0; times < size; times++)
{
int i;
bool isNotDuplicate = true;
while (isNotDuplicate)
{
isNotDuplicate = false;
i = 1 + rand() % 40;
for (int j = 0; j < times; j++)
{
if (i == winNums[j])
{
isNotDuplicate = true;
}
}
}
winNums[times] = i;
}
}
void checkNums(int userNums[], int winNums[], int size)
{
}
你应该做 2 个循环,像这样:
int checkNums(int userNums[], int winNums[], int size)
{
int nums = 0;
for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
if(userNums[i] == winNums[j])
nums++;
return nums;
}
这个函数会return有多少个数字是正确的 如果您不关心顺序并且您确定没有数字可以在同一个数组中出现 2 次,则此方法有效。 如果您也想查看订单:
int checkNums(int userNums[], int winNums[], int size)
{
int nums = 0;
for(int i = 0; i < size; i++)
if(userNums[i] == winNums[i])
nums++;
return nums;
}