我错过了一些代码吗?

时间:2016-11-18 12:42:20

标签: c++

所以我试图用C ++编写一个数字游戏的猜测。计算机假定采用4位数的随机数,然后玩家也应该输入一个数字。规则是: 如果电脑选择:1234 玩家输入:1356 1必须显示为绿色,3必须为黄色,因为它在错误的地方,5和6为红色。游戏继续,直到玩家得到正确的答案。

#include<iostream>
#include <windows.h>      
#include <stdlib.h>     
#include <time.h>
#include<unistd.h> 
using namespace std;
int main()
{
int b;

HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); 
cout<<"System is now generating a number...."<<"\n";

int *Number = new int[4];

 srand (time(NULL));
for(int counter=0;counter<4;)
{
Number[counter]=(rand()%9)+1;

if(Number[counter]!=Number[counter-1]&Number[counter]!=Number[counter-2]
  2]&Number[counter]!=Number[counter-3])         
{
 counter ++;
}
else
{
counter--;
}
}
cout<<Number[0]<<Number[1]<<Number[2]<<Number[3]<<"\n";

int *Guess=new int[4];
cout<<"please enter 4 digits for your number"<<"\n";
for(int counterG=0;counterG<4;counterG++) //line 34
{
cin>>Guess[counterG];
for(int counter;counter<4&counter>0;)
{

if((counter=counterG)&(Guess[counterG]=Number[counter])) //line 40
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,10);
cout<<b<<"\n";

}
if((counter=counterG)&(Guess[counterG]==Number[counter- 1]|Guess[counterG]==Number[counter+1]|Guess[counterG]==Number[counter-2]|Guess[counterG]==Number[counter+2]))
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,14);
cout<<b<<"\n";

}
else
{
b=Guess[counterG];
SetConsoleTextAttribute(handle,12);
cout<<b<<"\n";
}
}

}

现在程序没有问题直到第34行,但之后没有任何事情发生! It just gets the player digits 如果你能告诉我我做错了什么,我会很高兴的

2 个答案:

答案 0 :(得分:0)

不是一个完整的答案,但评论的时间太长了:

if(Number[counter]!=Number[counter-1]&Number[counter]!=Number[counter-2]
  2]&Number[counter]!=Number[counter-3])         

这一行单独包含很多错误:

  1. 要使逻辑AND运算符为&&,而不是&
  2. 您在第二行的开头输入了额外的2]。我希望你在写这个问题时只是一个错字。
  3. 首次运行时,counter为0.当您尝试访问Number[counter-3]时会发生什么?它是一个超出界限的访问,导致未定义的行为,这可能导致任何事情。
  4. 可能还有更多。

    现在该怎么做:

    1. 处理代码缩进。这真的很糟糕。
    2. 从一个更简单的程序开始,并验证它是否有效。然后,添加一小步,验证它,并且不要继续前进,直到您对结果感到满意为止
    3. 打开编译器警告。警告是你的朋友,而不是无聊的烦恼
    4. 了解如何使用调试器。没有调试你就不会走得太远。

答案 1 :(得分:-1)

1-替换&amp;与&amp;&amp;(AND运算符)

2-在一个简单的整数变量中输入,然后通过首先检查大于0且小于9999的数字来验证该数字。

3-然后从这个变量中分离数字,然后将这些数字分配给aaray索引。