Большое спасибо, Miku Hatsune. Проблема теперь решена наполовину. Половину чисел в матрице он почему-то заменяет числом -842150451, и не ставит пробелы между столбцами, хотя cout<<endl; есть в коде.
Хотя нет, со столбцами вопрос решён. Но вот что делать с -842150451 другой вопрос.
Header.h:
#include
#include
using namespace std;
int countColumn(int**matrix, int n, int m);
Main.cpp:
int main()
{
#include "Header.h"
setlocale(LC_ALL, "RUSSIAN");
ifstream in("input.txt");
cout << "Введите размер матрицы";
ifstream out("output.txt");
int n;
int m;
cin >> n;
cin >> m;
cout << endl;
int** matrix = new int*[n];
for (int i = 0; i < n; ++i) {
matrix[n] = new int[m];
}
if (in.is_open())
{
for (int i=0; i < n; ++i)
{
for (int j = 0; j < m; ++ j)
{
in >> matrix[i][j]; //Исключение
cout << &matrix[i][j];
}
cout << endl;
}
}
else
{
cout << "Файл не найден.";
}
cout << endl;
if (countColumn(matrix, n, m) == 0)
cout << "В матрице нет столбцов, содержащих более трёх повторяющихся элементов";
else
cout << "Количество столбцов матрицы, содержащих более трёх повторяющихся элементов равно " << (countColumn(matrix, n, m))<< "столбцов";
return 0;
}
#include "Header.h"
CountColumn.cpp:
int countColumn(int **matrix, int n, int m)
{
int countCol = 0;
for (int i = 0; i < n; i++)
{
int countRepeat = 0;
for (int j = 0; j < (m - 1); j++)
{
if (matrix[i][j] == matrix[i][j + 1])
countRepeat++;
if (countRepeat > 3)
countCol++;
}
}
return countCol;
}
Исключение возникает в месте, помеченном //Исключение.
Его текст:
Необработанное исключение по адресу 0x0F2E56AC (msvcp140d.dll) в Homework by 14.11.18 Task_1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCDCD.