РЕДАКТИРОВАТЬ Я позволил себе переписать ваш код.код, который я выложил, скомпилированный в VS2017.
ваше сравнение выглядит вроде
#include <iostream>
#include <cstdlib>
using namespace std;
bool isEqual(int* arr1[], int* arr2[], const int row, const int col) {
for (int r = 0; r < row; r++)
{
for (int c = 0; c < col; c++)
{
if (arr1[r][c] != arr2[r][c])
return false;
}
}
return true;
}
int main()
{
const int R = 3;
int * arr2D_a[R];
int * arr2D_b[R];
int C;
cout << "Enter number of columns: ";
cin >> C;
for (int r = 0; r < R; r++) {
arr2D_a[r] = new int[C];
arr2D_b[r] = new int[C];
}
for (int r = 0; r < R; r++) {
for (int c = 0; c < C; c++) {
int value = rand();
arr2D_a[r][c] = value % 2;
arr2D_b[r][c] = value % 2;
}
}
bool result = isEqual(arr2D_a, arr2D_b, R, C);
if (result)
cout << "\nThe 2 array are the same!\n";
else
cout << "\nThe 2 array are the differernt!\n";
for (int r = 0; r < R; r++) {
delete[] arr2D_a[r];
arr2D_a[r] = 0;
delete[] arr2D_b[r];
arr2D_b[r] = 0;
}
return 0;
}
- вы должны объявить свои параметры для своей функции правильно. bool isEqual (int arr1, int ** arr2, bool & eq, int row, int col) **, поскольку у вас есть двумерный массив
- , проверяющий, отличаются ли значения diff, экранируйте функцию каккак только они это сделают.нет необходимости в переменной bool
- Я не знаю, было ли это намеренно, но вы инициализировали массивы.не было никакого способа, которым они могли бы соответствовать.Вы вызывали rand () каждый раз, поэтому значения не могут совпадать
- было мелочь с удалением столбцов.вы должны использовать свой индекс c , а не переменную C
- это я не изменил ... пожалуйста, не используйте используя namespace std; .это пространство имен так огромно.когда вы определяете свои собственные функции, вы можете столкнуться с неустранимыми ошибками, когда вы объявляете функцию с именем, которое существует.
РЕДАКТИРОВАТЬ 2
Я полностьюудалил bool в вызове функции ...
РЕДАКТИРОВАТЬ 3
, чтобы оставить эту программу навсегда, вы должны предоставить возвращаемое значение
другойошибка была, вы не должны делать второй цикл удаления.так как вы не выделяли эту память динамически.
РЕДАКТИРОВАТЬ 4
переработали функцию, чтобы угодить всем компиляторам =)
РЕДАКТИРОВАТЬ 5
Я надеюсь, что последнее изменение этого ответа ^^ Я исправил проблему с памятью.Я проверил это с доктором.память и он говорит, все ок: D