解答C++作业03

类别:编程语言 点击:0 评论:0 推荐:

#include<cstdlib>
#include<ctime>
#include<string>
#include<iostream>
#include<conio.h>
using namespace std;

const int SECRET_SIZE=10; // size of secret number array
const int GUESS_SIZE=4; // size of guess number array

void initialize_secret( int secret[] )
{
 int i; 
 srand((int)time(0));
 for (i=0;i<SECRET_SIZE;i++)
 {
  secret[i]=(rand())%10;
 }

}//use time as seeds

void read_guess( int guess[] )
{
 string str;
 char ch;int i=0;
 
 cout<<"guess:"<<endl;
 do{
 

  ch=getch();

  if(ch>='0'&&ch<='9')
  {
   putchar(ch);
   putchar(' ');
   str=str+ch;i++;
  }//ignore other input
  
 
 // if(ch==13) cout<<endl;

 }while(i<4);
 guess[0]=(int)str[0]-48;
 guess[1]=(int)str[1]-48;
 guess[2]=(int)str[2]-48;
 guess[3]=(int)str[3]-48;
 cout<<endl;
}


bool no_match(int secret[], int guess[] )
{
 int i,j,cowCount=0,bullCount=0;
 
 for(i=0;i<4;i++)
 {

  for(j=0;j<4;j++)
  {
   if(secret[i]==guess[j])
   {
   
    if(i==j) bullCount++;else cowCount++;

    break;//since the 4 number are different;
   }
  }//end for
 }//end for
 cout<<"bull:"<<bullCount<<"   cow:"<<cowCount<<endl;

 if (bullCount==4) return false;
 else return true;
}

void display(int secret[])
{
 int i;
 for(i=0;i<4;i++)
  cout<<secret[i]<<"  ";
 cout<<endl;
}

bool same(int secret[])
{
 int i,j;
 for(i=0;i<4;i++)
 for(j=i+1;j<4;j++)
  if(secret[i]==secret[j]) return true;
 return false;
}

int main()
{
 int secret[SECRET_SIZE];
 int guess[GUESS_SIZE],guessTime=0;

 do{
  initialize_secret(secret);
 }while(same(secret));//make sure the numbers are different

 cout<<"Melcome to MOO!!!!!!"<<endl;
 cout<<"***************************************************************\n"
    "Moo is a guessing game imported from England.\n"
    "The computer picks a number consisting of four distinct decimal digits.\n"
    "YOU guess four distinct digits being scored on each guess.\n"
    "A \"cow\" is a correct digit in an incorrect position. \n"
    "A \"bull\" is a correct digit in a correct position.\n"
       "The game continues until YOU guesses all the number.(a score of four bulls)\n"
       "Input four 0 to show secret. :)\n"
    "enioy it!!!!!! :)\n"
    "***************************************************************\n"<<endl;
 //description

 do{ 
  read_guess(guess);
  guessTime++;
  if (guess[0]==0&&guess[1]==0&&guess[2]==0&&guess[3]==0)
   display(secret); 
 }while(no_match(secret,guess));

 cout<<"YOU finally succeed!"<<endl;
 cout<<"YOU have tried "<<guessTime<<" times!"<<endl;
 cout<<"Welcome to replay this game!!!!!!"<<endl;
 return 0;
}

本文地址:http://com.8s8s.com/it/it26237.htm