2D массив не заполняется правильно или ...? C ++

0

У меня есть серьезная проблема, которую я просто не могу решить. Я прошу прощения, если это действительно новичок-подобная проблема.

srand(117);
//enumeration type to keep track of which fish is which
enum CellState {EMPTY, FISH, SHARK};

//Creating the grid
CellState fishGrid[MAX_X][MAX_Y];
for(int m = 0; m < MAX_X; ++m)
{
    for(int n = 0; n < MAX_Y; ++n)
    {
        int num = rand() % 2;
        if(num == 0)
            fishGrid[m][n] = EMPTY;
        else
        {
            num = rand() % 2;
            if(num == 0)
                fishGrid[m][n] = SHARK;
            else
                fishGrid[m][n] = FISH;
        }
    }
}
//calculate how many on grid
if(stepsTaken % 5 == 0)
    {
        int fishAmount = 0;
        int sharkAmount = 0;

        for(int m = 0; m < MAX_X; m++)
        {
            for(int n = 0; n < MAX_Y; n++)
            {
                if(fishGrid[m][n] = FISH)
                    fishAmount++;
                else if(fishGrid[m][n] = SHARK)
                    sharkAmount++;
            }
        }
        cout << "FISH: " << fishAmount << endl
        << "SHARKS: " << sharkAmount << endl << endl;

По какой-то причине выход всегда: FISH: 100 SHARKS: 0

Я не обязательно понимаю. Кто-нибудь сможет мне помочь? Благодарю.

Теги:

1 ответ

3

= обозначает оператор присваивания в C++. Это означает, что вы здесь

            if(fishGrid[m][n] = FISH)
                fishAmount++;
            else if(fishGrid[m][n] = SHARK)
                sharkAmount++;

использует оператор присваивания внутри условий if. В соответствии с вышеизложенным вы переопределяете всю свою сетку значениями FISH.

Сравнение равенств в C++ выполняется оператором ==. Но вы уже знаете, что, так как вы уже используете == в ваших num сравнениях. Почему вы используете = в этих сетках сравнения?

  • 0
    лол о вау Случайный. Благодаря тонну!
  • 0
    Подсказка: размещение константы на левой стороне приведет к ошибкам компиляции из этого типа опечатки, например, если (FISH = fishGrid [m] [n]) ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню