猜测代码的Mastermind问题

时间:2014-07-18 00:30:49

标签: c++

好的,我有学校问题,我需要创建一个猜谜游戏。原始数字是一个随机的五位数字,如果他们猜测并得到一个正确的数字,它会让他们知道数字中的一个是正确的,如果数字在正确的位置,它让他们知道数字是正确的,他们有一个在正确的位置。现在我有点不确定在哪里拿这个我的代码已经被删除因为我很困惑如果有人可以给我看一个教程或者我可以阅读的东西教我如何制作这样的东西然后非常感谢你是我混乱的代码

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void game(int);

int main(){

int a = 0;;
game(a);




system("pause");
return 0;
 }
  void game(int a){

srand(time(0));
int guess[5];
int answer;
int num1 = rand() % 9 + 1;
int num2 = rand() % 9 + 1;
int num3 = rand() % 9 + 1;
int num4 = rand() % 9 + 1;
int num5 = rand() % 9 + 1;

cout << "Your number is " << num1 << num2 << num3 << num4 << num5 << endl;

cout << "please guess a number";




if (guess[0] == num1 && guess[1] == num2 && guess[2] == num3 && guess[3] == num4 &&           guess[4] == num5){
    cout << "you have guessed correctly you win!!!!!\n";
}
}

好吧我以为我猜了一个阵列并且使用了一个游戏循环,但它的猜测部分是让我,我不明白如何将它们放入5位数并将其与5位数比较我随机生成

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式处理输入:5个字符或1个数字 让我们考虑一下这个数字。

隔离数字
用户将输入一个数字0..99999 要检查数字,您应该使用 modulo 算术(余数)和除法来隔离它。

给出一个数字:12345,让我们隔离数字3。 首先让我们得到余数除以10到3的幂,即1000.这基本上删除了前两位数字:

12345 % 1000 == 345.

要获得数字3,我们将结果除以100:

345 / 100 == 3.

您可以将其与您随机生成的单个数字进行比较。

按字符比较
我们可以将输入视为5个字符(a.k.a。字母或数字)。这将被称为字符串。

随机“数字”或数字可以通过向它们添加字符“0”转换为字符表示。这使我们可以用相同的单位,字符比较值。

因此,如果您想比较第3位数字,您将与字符串中的第3个字符进行比较:

std::string users_number;
char computers_guess[5];
if (users_number[3] == computers_guess[3])
{
  // tell user that one of the digits is correct and in the correct position.
}
相关问题