#include iostream>
#include stdlib.h>
int main()
{
setlocale(LC_ALL, "ru");
system("color 70");
char** array;
int n, m;
std::cout << "Введите размер поля N(1 <= N <= 200)" << std::endl;
std::cin >> n;
std::cout << "Введите размер поля M(1 <= M <= 200)" << std::endl;
std::cin >> m;
array = (char**)malloc(n * sizeof(char*));
for (int i = 0; i < m; i++)
{
array[i] = (char*)malloc(m * sizeof(char));
}
srand(time(NULL));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (rand() % 5 == 0)
array[i][j] = '*';
else array[i][j] = '.';
}
}
std::cout << "Исходное поле с рандомным кол-вом мин" << std::endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
std::cout << array[i][j] << " ";
}
std::cout << "\n";
}
std::cout << "Конечное поле \n\n" << std::endl;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
int a = 0;
if (array[i][j] == '*') continue; //Смотрел дебагером, при i=4, j=1 вылазит это:
if (array[i + 1][j] == '*') a++; //Необработанное исключение по адресу 0x00576E41 в TASK14.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFDFE.
if (array[i][j + 1] == '*') a++;
if (array[i - 1][j] == '*') a++;
if (array[i][j - 1] == '*') a++;
if (array[i + 1][j + 1] == '*') a++;
if (array[i - 1][j - 1] == '*') a++;
if (array[i - 1][j + 1] == '*') a++;
if (array[i + 1][j - 1] == '*') a++;
array[i][j] = a;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
std::cout << array[i][j] << " ";
}
std::cout << "\n";
}
for (int i = 0; i < n; i++)
free(array[i]);
array = 0;
system("pause");
return 0;
}
Asked
Active
Viewed 27 times
0
zyzz
- 1
i =nк какому элементу обращаетсяarray[i+1][j]? Сам цикл уже странныйfor (int i = 1; i <= n; i++). Приi =nуже будет исключение, без всяких +1. – Юрий Козлов Nov 19 '21 at 07:15n, а не доm. 2) Циклы с if'ами выходят за границы массивов. 2) После освобождения памяти в цикле необходимо удалить сам массив указателей. После цикла нужно вызватьfree(array), а не просто обнулить указатель.for (int i = 1; i < n - 1; i++) for (int j = 1; j < m - 1 ; j++)– AlexGlebe Nov 19 '21 at 08:46