Слово "задан двумерный массив" вовсе не значит что его нужно создавать. #include
int main()
{
int n, m;
std::cin >> n >> m;
m *= n;
int prod = 1;
while (m-- && prod && abs(prod) < 1000) { std::cin >> n, prod *= n; }
std::cout 99 && abs(prod) < 1000 ? "Yes" : "No");
}
Программа выглядит корректно, но она не учитывает случай, когда все элементы массива matrix равны нулю. В этом случае произведение будет равно нулю, что не входит в диапазон от 100 до 999.
Вам следует добавить условие, которое обрабатывает этот случай, например, возвращать false в случае, если все элементы массива нулевые:
bool isThreeDigitProduct(int matrix[100][100], int n, int m)
{
int product = 1;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
product *= matrix[j];