C
C
Chipu2018-10-01 07:40:39
C++ / C#
Chipu, 2018-10-01 07:40:39

C++ when outputting an array, a breakpoint is triggered, how to fix it?

#include "stdafx.h"
#include <iostream>

using namespace std;

/*

Практическая работа №4

Составить программу на языке C++, состоящую из двух функций с использованием указателей.
В главной функции выполнить ввод двумерного массива и вывод полученных результатов.
В вызываемой функции выполнить обработку двумерного массива.

Индивидуальные задания приведены в приложении №2.

*/


void MatrixTransform(int **matrix,int m)
{
  int swap = 0;
  int minus = 0;
  for (int i = 0;i < m;i++)
  {
    minus = 0;
    swap = matrix[i][0];
    for (int j = 0;j < m;j++)
    {
      if (matrix[i][j] > swap)
        swap = matrix[i][j];
      if (matrix[i][j] < 0 && minus == 0)
        minus = matrix[i][j];
    }
    matrix[i][m] = swap;
    matrix[i][m + 1] = minus;
  }
}
int main()
{
  int m;

  cin >> m;
  int **matrix = new int*[m + 2];
  for (int i = 0;i < m;i++)
    matrix[i] = new int[m];

  for (int i = 0;i < m;i++)
  {
    for (int j = 0;j < m;j++)
      cin >> matrix[i][j];
  }

  MatrixTransform(matrix, m);

  for (int i=0;i<m+2;i++)
  {
    for (int j=0;j<m+2;j++)
    {
      cout << matrix[i][j] << " ";
    }
    cout << endl;
  }
  system("Pause");
    return 0;
}

The error is here: cout << matrix[i][j] << " ";

Answer the question

In order to leave comments, you need to log in

1 answer(s)
1
15432, 2018-10-01
@15432

You create an (m+2) × m matrix, and then access the element [m+1][m+1], initialize completely
for (int i = 0;i < m+2;i++) matrix[i] = new int[m+2];

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question