2015-07-02 2 views
1
#include <iostream> 
#include <ctime> 
#include <limits> 
#include <cstdlib> 
#include <stdio.h> 
#include <stdlib.h> 

using namespace std; 

int main() 
{ 

    int a, b; 
    int I, P; 
    unsigned int x; 
    unsigned int y; 
    int n, m; 
    unsigned int X, O; 

    int tictac[3][3] = { 
     {1, 1, 1}, 
     {1, 1, 1} , 
     {1, 1, 1} }; 

     cout << "Player 1, enter X or O:" << endl; 
     cin >> a; 

     while (a == X); 
     { 
      cout << "Now, fill in the desired coordinated in a 3x3 square, a[x][y]" << endl; 
      cout << "Enter 'x' in [x]" << endl; 
      cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n'); 
      cin >> x; 
      cout << "Enter 'y' in [y]" << endl; 
      cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n'); 
      cin >> y; 

      tictac[x][y] == X; 
     } 

} 

Я пишу программу, которая позволяет 2 игрокам играть в титакто на сетке 3x3, а остальные команды «CIN» отказываются принимать входные данные.Моя команда CIN полностью пропускает вход? Я пробовал все

Я попытался изменить "КИН" команды:

getline (cin, x) 
getline (cin, y) 

Пробовал изменять переменные из (неподписанных Int) к (Signed Int), и использовать cin.ignore() команды, тем не менее проблема остается.

+0

Я боюсь 'a == X' не то, что вы ожидаете от него. 'X' не инициализирован, поэтому есть высокие шансы, что вы никогда не войдете в цикл while. – user463035818

+0

@OpenTheCSV Вы не компилируете с включенным многими предупреждениями, не так ли? Ваш компилятор мог бы указать на некоторые проблемы с вашим кодом, если бы вы только допустили это. – Biffen

+1

@OpenTheCSV И почему он говорит пользователю вводить письмо, когда вы читаете 'int' ?! – Biffen

ответ

2
unsigned int X, O; 

int tictac[3][3] = { 
    {1, 1, 1}, 
    {1, 1, 1} , 
    {1, 1, 1} }; 

    cout << "Player 1, enter X or O:" << endl; 
    cin >> a; 

    while (a == X); 

В этой последней строке, X не был инициализирован, поэтому вы сравниваете значение ни к чему, в частности a «s. Кроме того, точка с запятой в конце делает цикл повторяющимся пустым.

 tictac[x][y] == X; 

Это сравнение, результат которого вы выбрасываете. Используйте = для назначения.