문제 설명
C++의 Langtons Ant(콘솔) ‑ 코어 덤프됨 (Langtons Ant in C++ (console) ‑ core dumped)
I wrote a simple Langtons Ant in C++ (console). But (dont really know why) I'm getting a core dumped every time I run my program:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
bool endGame = false;
enum compass {north, east, south, west};
compass dir = north;
int x = 0, y = 0;
int n = 30, m = 30;
int **board = new int*[n];
for(int i = 0; i <n; i++)
board[i] = new int[m];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
board[i][j] = rand()%2;
long count = 0;
while(!endGame)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
//Print board
if(board[i][j] == 0)
cout << '+';
else
cout << '#';
}
cout << endl;
}
//Ant
if (board[x][y] == 0)
{
board[x][y] = 1;
switch (dir){
case north:
dir = east;
x = ((x+1)%m);
break;
case east:
dir = south;
y = ((y‑1) % n);
break;
case south:
dir = west;
x = ((x‑1) % m);
break;
case west:
dir = north;
y = ((y+1) %n);
break;
}
}else
{
board[x][y] = 0;
switch(dir){
case north:
dir = west;
x = ((x‑1) % m);
break;
case west:
dir = south;
y = ((y‑1) % n);
break;
case south:
dir = east;
x = ((x+1)%m);
break;
case east:
dir = north;
y = ((y+1) %n);
break;
}
}
cout << endl << count << endl;
count++;
cin.sync();
cin.get();
}
cin.sync();
cin.get();
return 0;
}
How can I get rid of this error?
참조 솔루션
방법 1:
It's probably use of modulo like this:
x = ((x‑1) % m);
Keep in mind negative % positive = negative
, meaning you can get out of bounds.