Вам необходимо заменить
for (int i = 0; i < columns; i++) {
for (int j = 0; j < rows; j++) {
std::cout << array[i][j] << " ";
}
std::cout << "\n";
if (arrx[i]) {
for (int i = 0; i < rows; i++) {
std::cout << 0 << " ";
}
std::cout << "\n";
}
}
на
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
std::cout << array[i][j] << " ";
if (arrx[j]) {
std::cout << 0 << " ";
}
}
}
. Это печатает ноль после каждого элемента, значение столбца которого помечено.То, что вы пытались сделать, это печатать на стандартный вывод столбец за столбцом, что не совсем так.
Также я настоятельно рекомендую вам рассмотреть возможность использования std :: vector вместо простых указателей, чтобы избежать ошибок, таких как здесь, где вызабыл освободить память.