Не могу передать матрицу в функцию через массив указателей

Задание:

введите сюда описание изображения

Вот программа:

#include <iostream>
using namespace std;


int foo(int *ptrmatrix[], const int size)
{
  int count = 0;
  if (size == 5)
  {
    for (int i = 0; i < size; i++)
    {
      cout << endl;
      for (int z = 0; z < size; z++)
      {
        cout << ptrmatrix[i][z] << "\t";
      }
    }
    return count;
  }

  if (size == 3)
  {
    for (int i = 0; i < size; i++)
    {
      cout << endl;
      for (int z = 0; z < size; z++)
      {
        cout << ptrmatrix[i][z] << "\t";
      }
    }
    return count;
  }
}

int main()
{
  const int n = 5;
  int matrix_1[n][n];

  cout << "матрица A: " << endl;
  for (int i = 0; i < n; i++)
  {
    for (int z = 0; z < n; z++)
    {
      matrix_1[i][z] = rand() % 21 + (-10);
      cout << matrix_1[i][z] << "\t";
    }
    cout << endl;
  }
  cout << endl;

  const int m = 3;
  int matrix_2[m][m];
  cout << "матрица B: " << endl;
  for (int i = 0; i < m; i++)
  {
    for (int z = 0; z < m; z++)
    {
      matrix_2[i][z] = rand() % 21 + (-10);
      cout << matrix_1[i][z] << "\t";
    }
    cout << endl;
  }
  cout << endl;


  int *ptrmatrix_1[n];
  for (int i = 0; i < n; i++)
  {
    ptrmatrix_1[i] = matrix_1[i];
  }

  int *ptrmatrix_2[m];
  for (int i = 0; i < n; i++)
  {
    ptrmatrix_2[i] = matrix_2[i];
  }


  cout << "матрица A: " << foo(ptrmatrix_1, 5) << endl;
  cout << "матрица B: " << foo(ptrmatrix_2, 3) << endl;
}

Помогите пожалуйста. Получаются другие элементы когда вывожу их через функцию. Что я сделал не так с массивом указателей?

Вывод:

матрица A:

-3 -3 -8 10 3

10 -1 -2 -2 -9

-4 -8 -10 10 -10

-5 6 -6 -6 0

8 9 5 4 -9

матрица B:

-3 -3 -8

10 -1 -2

-4 -8 -10

матрица A:

-3 -3 -8 10 3

10 3 10 -1 -2

-4 -8 -10 10 -10

-5 6 -6 -6 0

8 9 5 4 -9 0

матрица B:

-7 -4 -1

4 6 -6

7 4 3 0


Ответы (1 шт):

Автор решения: Rauf Auf

все спасибо, я решил другим способом через указатель

#include <iostream>
#include <cmath>
using namespace std;


int processing(int *matrix, const int size)
{   
    int count = 0;
    for (int i = 0; i < pow(size, 2); i = i + size + 1)
    {
        if (size == 5)
        {
            if (matrix[i] < 0)
                count++;
        }
        else
        {
            if (matrix[i] < 2.7)
                count++;
        }
    }
    
    return count;
}

int main()
{
    const int n = 5;
    int matrix_1[n][n];
    cout << "матрица A: " << endl;
    for (int i = 0; i < n; i++)
    {
        for (int z = 0; z < n; z++)
        {
            matrix_1[i][z] = rand() % 21 + (-10);
            cout << matrix_1[i][z] << "\t";
        }
        cout << endl;
    }
    cout << endl;

    const int m = 3;
    int matrix_2[m][m];
    cout << "матрица B: " << endl;
    for (int i = 0; i < m; i++)
    {
        for (int z = 0; z < m; z++)
        {
            matrix_2[i][z] = rand() % 21 + (-10);
            cout << matrix_1[i][z] << "\t";
        }
        cout << endl;
    }
    cout << endl;    


    cout << "кол-во отрицательных элементов главной диагонали матрицы A: " << processing((int*)matrix_1, n) << endl;
    cout << "кол-во элементов, меньших 2.7 главной диагонали матрицы B: " << processing((int*)matrix_2, m) << endl;
}

→ Ссылка