Двумерные динамические массивы 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мерный массив и вывести для проверки, работает ли он.Но оказалось что он не работет и ничего не выводит.Как решить данную проблему?


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