Вот рабочий вариант программы. Он считает нули в нечётных столбцах, если нумеровать их с 1: в 1-м, 3-м, 5-м и т. д.
#include <iostream>
#include <vector>
int countZerosInOddColumns(const std::vector<std::vector<int>>& matrix) {
int count = 0;
// Индексы 0, 2, 4 соответствуют столбцам 1, 3, 5
for (std::size_t column = 0; column < (matrix.empty() ? 0 : matrix[0].size());
column += 2) {
for (std::size_t row = 0; row < matrix.size(); ++row) {
if (matrix[row][column] == 0) {
++count;
}
}
}
return count;
}
int main() {
int rows, columns;
std::cin >> rows >> columns;
if (rows <= 0 || columns <= 0) {
std::cout << "Размеры матрицы должны быть положительными.\n";
return 1;
}
std::vector<std::vector<int>> matrix(rows, std::vector<int>(columns));
for (int row = 0; row < rows; ++row) {
for (int column = 0; column < columns; ++column) {
std::cin >> matrix[row][column];
}
}
std::cout << countZerosInOddColumns(matrix) << '\n';
return 0;
}
Например, для матрицы
3 3
0 5 0
2 0 7
0 1 4
проверяются 1-й и 3-й столбцы, а результат будет 3.
Ошибки в исходном коде, судя по снимку, могли возникнуть из-за нарушенного синтаксиса — например, пропущенных скобок или ;; последующие сообщения компилятора часто появляются уже вслед за первой такой ошибкой. Стандарт C++17 для этой версии программы не обязателен.