Двумерные динамические массивы C++
Есть 3 двумерных массива A, B, C. Количество строк и столбцов для них вводит пользователь с клавиатуры для каждого из них. Реализуйте: 1. Создайте одномерный массив, который содержит общие значения для A, B, C; 2. Создайте одномерный массив, который содержит уникальные значения для A, B, C; 3. Создайте одномерный массив, который содержит общие значения для A и C; 4. Создайте одномерный массив, который содержит отрицательные значения для A, B, C без повторений;
#include<iostream>
#include<random>
using namespace std;
random_device numbers;
mt19937 gen(numbers());
uniform_int_distribution<int> dis(-30, 40);
template<typename T>void DynamicArrayTwo(T**& originalArr, int& sizeRow, int& sizeCol);
template<typename T>void DeletingTwoDimensionalArray(T**& originalArr, int& sizeRow, int& sizeCol);
template<typename T>void FillingTwoDimensionalArrayRandomNumbers(T**& originalArr, int& sizeRow, int& sizeCol);
template<typename T>void OutTwoDimensionalArray(T**& originalArr, int& sizeRow, int& sizeCol);
void task3_1(int**& A, int**& B, int**& C, int*arr, int& sizeRowA, int& sizeColA, int& sizeRowB, int& sizeColB, int& sizeRowC, int& sizeColC);
void OutOneDimensionalArray(int* arr, int& size);
void task3() {
int** A;
int sizeRowA,sizeColA;
cout << "Enter A\n";
cout << "Row = ";
cin >> sizeRowA;
cout << "Column = ";
cin >> sizeColA;
int** B;
int sizeRowB,sizeColB;
cout << "\n\nEnter B\n";
cout << "Row = ";
cin >> sizeRowB;
cout << "Column = ";
cin >> sizeColB;
int** C;
int sizeRowC,sizeColC;
cout << "\n\nEnter C\n";
cout << "Row = ";
cin >> sizeRowC;
cout << "Column = ";
cin >> sizeColC;
cout << "\n\n";
int arr_size = sizeRowA * sizeColA * sizeRowB * sizeColB * sizeRowC * sizeColC;
int* arr = new int[arr_size];
DynamicArrayTwo(A, sizeRowA, sizeColA);
DynamicArrayTwo(B, sizeRowB, sizeColB);
DynamicArrayTwo(C, sizeRowC, sizeColC);
FillingTwoDimensionalArrayRandomNumbers(A, sizeRowA, sizeColA);
FillingTwoDimensionalArrayRandomNumbers(B, sizeRowB, sizeColB);
FillingTwoDimensionalArrayRandomNumbers(C, sizeRowC, sizeColC);
OutTwoDimensionalArray(A, sizeRowA, sizeColA);
cout << "\n\n";
OutTwoDimensionalArray(B, sizeRowB, sizeColB);
cout << "\n\n";
OutTwoDimensionalArray(C, sizeRowC, sizeColC);
task3_1(A, B, C,arr, sizeRowA, sizeColA, sizeRowB, sizeColB, sizeRowC, sizeColC);
OutOneDimensionalArray(arr, arr_size);
int main() {
task3();
}
template<typename T>void DynamicArrayTwo(T**& originalArr, int& sizeRow, int& sizeCol) {
originalArr = new int* [sizeRow];
for (int i = 0; i < sizeRow; i++) {
originalArr[i] = new int[sizeCol];
}
}
template<typename T>void DeletingTwoDimensionalArray(T**& originalArr, int& sizeRow, int& sizeCol) {
for (int i = 0; i < sizeRow; i++) {
delete[] originalArr[i];
}
}
template<typename T>void FillingTwoDimensionalArrayRandomNumbers(T**& originalArr, int& sizeRow, int& sizeCol) {
for (int i = 0; i < sizeRow; i++) {
for (int j = 0; j < sizeCol; j++) {
originalArr[i][j] = dis(numbers);
}
}
}
template<typename T>void OutTwoDimensionalArray(T**& originalArr, int& sizeRow, int& sizeCol) {
for (int i = 0; i < sizeRow; i++) {
for (int j = 0; j < sizeCol; j++) {
cout.width(7);
cout << originalArr[i][j];
}
cout << endl;
}
}
void task3_1(int**& A, int**& B, int**& C, int* arr, int& sizeRowA, int& sizeColA, int& sizeRowB, int& sizeColB, int& sizeRowC, int& sizeColC) {
int index = 0;
for (int i = 0; i < sizeRowA; i++) {
for (int j = 0; i < sizeColA; i++) {
arr[index] = A[i][j];
index++;
}
}
for (int i = 0; i < sizeRowB; i++) {
for (int j = 0; i < sizeColB; i++) {
arr[index] = B[i][j];
index++;
}
}
for (int i = 0; i < sizeRowC; i++) {
for (int j = 0; i < sizeColC; i++) {
arr[index] = C[i][j];
index++;
}
}
}
void OutOneDimensionalArray(int* arr, int& size) {
cout << "{ ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
if (i != size - 1) {
cout << ", ";
}
}
cout << " }";
}
Доброго дня всем.Ну как говорится фундамент заложил но не могу реализовать основную логику, оствлось только подпункты сделать.Но уже несколько часов сижу и не могу реализовать его.Пытался сперва превратить 2мерные массивы в 1мерные, и записать все числа в один большой одномерный массив чтоб легче было манипулировать ею, но у меня возникла проблема: void task3_1 в этой функции я пытался все 3 2мерных массива преобразовать в единый 1мерный массив и вывести для проверки, работает ли он.Но оказалось что он не работет и ничего не выводит.Как решить данную проблему?