2015-03-23 2 views
0

Во-первых, я новичок в программировании, поэтому заранее извиняюсь, если мой вопрос кажется основным!Array не принимает полный номер

Я пытаюсь построить игру коров и быков, в которой я храню случайный 9-разрядный код (между 0-1) в одном массиве и проверяю его на другой массив, который пользователь ввел. Затем программа выводит правильные цифры в нужном месте, как быки, и правильные цифры в неправильном месте, как коровы.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я ввожу число, которое нужно сопоставить с секретным кодом, мне нужно нажать enter после каждой цифры, чтобы он был правильно введен. Например, когда я ввожу следующее:

010101010 возвращается как 1010101010

000000001 возвращается как 1

000000000 возвращается как 0

Как вы можете видеть, 1-х, кажется, штраф, но 0 не выбраны, если они являются первой цифрой.

Here is the code: 
#include <iostream> 
#include <ctime> 

using namespace std; 

void gameOne(); 
void gameTwo(); 
void gameThree(); 
void getthemagicnumber(int magicnoarray[], int size); 
void gettheplayernumber(int usernoarray[], int size); 
void checkthenumbers(int magicnoarray[], int usernoarray[], int size); 

int main() 
{ 
    int menuChoice = 0; 


     cout << " //////////////////////////\\\\\\\\\\\\\\\\\\\\\\\n" 
     " //   Welcome to bulls and cows   \\\n" 
     " // Where everything is not quite as it seems  \\\n" 
     " //    Press 1 to play me     \\\n" 
     "//   Press 2 to let me play     \\\n" 
     "\\  Press 3 to play me with a twist    //\n" 
     " \\    Press 4 to exit     //\n" 
     " \\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////\n" << endl; 
     cin >> menuChoice; 

     switch (menuChoice)  // menu select 
     { 
     case 1: 
      gameOne(); 
      break; 

     case 2: 
      gameTwo(); 
      break; 

     case 3: 
      gameThree(); 
      break; 

     default: 
      cout << "Thanks for playing, have a great day!" << endl; 
     } 
} 


void gameOne() 
{ 
    int magicnoarray[9], usernoarray[9]; 
    int size = 9; 

    srand((unsigned)time(NULL)); 

    getthemagicnumber(magicnoarray, size); 
    gettheplayernumber(usernoarray, size); 

// checkthenumbers(magicnoarray, usernoarray, size); 
// display the results; 

// do the above until either bulls = 9 OR 
//  number of goes = 7, or whatever you want 





    cout << "your guess was: "; 

    for (int i = 0; i < 9; i++) 
    { 
     cout << usernoarray[i]<<" "; 
    } 
    cout << endl; 

    cout << "my guess was: "; 

    for (int i = 0; i < 9; i++) 
    { 
     cout << magicnoarray[i] << " "; 
    } 
    cout << endl; 

} 


void getthemagicnumber(int array[],int size) 
{ 
    for (int i = 0; i < 9; i++) 
    { 
     array[i] = rand() %2; 
    } 
}; 


void gettheplayernumber(int array[], int size) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << "Please enter your guess: "; 
     cin >> array[i]; 
    } 
}; 



void gameTwo() 
{ 

}; 

void gameThree() 
{ 

}; 

Заранее благодарю вас за помощь, это очень ценно!

+0

Несвязанный: я использовал бы параметр 'size' в' getthemagicnumber' для чего-то, кроме занимающего место в стеке активации, поскольку вы столкнулись с проблемой передачи его и всего. Что касается вашей проблемы. вам необходимо обработать входную строку по одному символу за раз. – WhozCraig

ответ

4

Вы не можете прочитать ведущие нули в целых числах. Вы должны прочитать его как строку, а затем обработать ее, как хотите.

+0

Большое спасибо за вашу помощь, я буду исследовать строки еще в таком случае! EDIT: Я бы поднял вас, но, похоже, я еще не могу, спасибо еще раз :) – Prohibited

Смежные вопросы