Еще одна проблема с магическим квадратом. Я создаю нечетную магическую квадратную программу на C++, и по какой-то причине программа продолжает давать ошибку ошибки сегментации и уходит. Вот код:Magic Square in C++
#include <iostream>
using std::cin;
using std::cout;
#include <cstring>
using std::memset;
int *generateOddSquare(int n) {
if (n % 2 != 0 && n >= 3) {
int row = 0, col = n/2, square = n * n;
int **matrix = new int *[n], *dest = new int[square];
memset(matrix, 0, sizeof(matrix[0][0]) * square);
for (int i = 1; i <= square; i++) {
matrix[row][col] = i;
if (i % n == 0)
row++;
else {
if (row == 0)
row = n - 1;
else
row--;
if (col == (n - 1))
col = 0;
else
col++;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
dest[(i * n) + j] = matrix[i][j];
}
}
return dest;
} else
return NULL;
}
int main() {
int *arr = generateOddSquare(3);
for (int i = 0; i < 9; i++) {
cout << arr[i] << "\n";
}
}
Что в этом не плохого? Является ли способ заявить, что мои указатели правильные?
Вы не инициализировали указатели строк матрицы. –