struct Point
{
Point *u, *d, *l, *r, *lu, *ld, *ru, *rd;
char value;
};
#define SIZEM 10
void PrintMatrix(Point m[][SIZEM])
{
for(int i = 0; i < SIZEM; ++i)
{
for(int j = 0; j < SIZEM; ++j)
{
std::cout << m[i][j].value;
}
std::cout << std::endl;
}
}
void FillMatrix(Point arr[][SIZEM])
{
for(int i = 0; i < SIZEM; ++i)
{
for(int j = 0; j < SIZEM; ++j)
{
arr[i][j].value = 'O';
}
}
}
void LinkMatrix(Point arr[][SIZEM])
{
for(int i = 0; i < SIZEM; ++i)
{
for(int j = 0; j < SIZEM; ++j)
{
if(i-1 >= 0)
arr[i][j].u = &arr[i-1][j];
else
arr[i][j].u = nullptr;
if(i+1 <= SIZEM-1)
arr[i][j].d = &arr[i+1][j];
else
arr[i][j].d = nullptr;
if(j-1 >= 0)
arr[i][j].l = &arr[i][j-1];
else
arr[i][j].l = nullptr;
if(j+1 <= SIZEM-1)
arr[i][j].r = &arr[i][j+1];
else
arr[i][j].r = nullptr;
if(i-1 >= 0 && j -1 >= 0)
arr[i][j].lu = &arr[i-1][j-1];
else
arr[i][j].lu = nullptr;
if(i-1 >= 0 && j+1 <= SIZEM-1)
arr[i][j].ru = &arr[i-1][j+1];
else
arr[i][j].ru = nullptr;
if(i+1 <= SIZEM-1 && j-1 >= 0)
arr[i][j].ld = &arr[i+1][j-1];
else
arr[i][j].ld = nullptr;
if(i+1 <= SIZEM-1 && j+1 <= SIZEM-1)
arr[i][j].rd = &arr[i+1][j+1];
else
arr[i][j].rd = nullptr;
}
}
}
int main()
{
Point arr[SIZEM][SIZEM];
LinkMatrix(arr);
FillMatrix(arr);
arr[1][1].rd->rd->rd->rd->rd->value= 'X';
PrintMatrix(arr);
std::cin.get();
}
Comments