Загрузка данных


#include <iostream>
using namespace std;

int main() {
    // Переменные для хранения размеров матриц
    int rows1, cols1; // rows1 - строки первой, cols1 - столбцы первой
    int rows2, cols2; // rows2 - строки второй, cols2 - столбцы второй
    
    // Запрашиваем у пользователя размер первой матрицы
    cout << "Vvedite kolichestvo strok 1 matricy: ";
    cin >> rows1;
    cout << "Vvedite kolichestvo stolbcov 1 matricy: ";
    cin >> cols1;
    
    // Выделяем память под первую матрицу
    // Создаём массив указателей на строки
    int** matrix1 = new int*[rows1];
    // Для каждой строки выделяем память под столбцы
    for (int i = 0; i < rows1; i++) {
        matrix1[i] = new int[cols1];
    }
    
    // Заполняем первую матрицу с клавиатуры
    cout << "Vvedite elementy 1 matricy:\n";
    for (int i = 0; i < rows1; i++) {       // Цикл по строкам
        for (int j = 0; j < cols1; j++) {   // Цикл по столбцам
            cout << "Element [" << i << "][" << j << "]: ";
            cin >> matrix1[i][j];
        }
    }
    
    // Запрашиваем у пользователя размер второй матрицы
    cout << "Vvedite kolichestvo strok 2 matricy: ";
    cin >> rows2;
    cout << "Vvedite kolichestvo stolbcov 2 matricy: ";
    cin >> cols2;
    
    // Сначала проверяем размеры - если не совпадают, дальше можно не проверять
    if (rows1 != rows2 || cols1 != cols2) {
        cout << "Ne sovpadayut\n";
        
        // Освобождаем память первой матрицы перед выходом
        for (int i = 0; i < rows1; i++) {
            delete[] matrix1[i]; // Удаляем каждую строку
        }
        delete[] matrix1; // Удаляем массив указателей
        
        return 0; // Завершаем программу
    }
    
    // Выделяем память под вторую матрицу
    int** matrix2 = new int*[rows2];
    for (int i = 0; i < rows2; i++) {
        matrix2[i] = new int[cols2];
    }
    
    // Заполняем вторую матрицу с клавиатуры
    cout << "Vvedite elementy 2 matricy:\n";
    for (int i = 0; i < rows2; i++) {       // Цикл по строкам
        for (int j = 0; j < cols2; j++) {   // Цикл по столбцам
            cout << "Element [" << i << "][" << j << "]: ";
            cin >> matrix2[i][j];
        }
    }
    
    // Флаг для отслеживания совпадения матриц
    bool equal = true; // Изначально считаем что матрицы равны
    
    // Поэлементно сравниваем две матрицы
    for (int i = 0; i < rows1 && equal; i++) {       // Идём по строкам
        for (int j = 0; j < cols1 && equal; j++) {   // Идём по столбцам
            // Если нашли разные элементы
            if (matrix1[i][j] != matrix2[i][j]) {
                equal = false; // Ставим флаг в false
            }
        }
    }
    
    // Выводим результат сравнения
    if (equal) {
        cout << "Sovpadayut\n"; // Все элементы одинаковые
    } else {
        cout << "Ne sovpadayut\n"; // Есть различия
    }
    
    // Освобождаем память первой матрицы
    for (int i = 0; i < rows1; i++) {
        delete[] matrix1[i]; // Удаляем каждую строку
    }
    delete[] matrix1; // Удаляем массив указателей
    
    // Освобождаем память второй матрицы
    for (int i = 0; i < rows2; i++) {
        delete[] matrix2[i]; // Удаляем каждую строку
    }
    delete[] matrix2; // Удаляем массив указателей
    
    return 0; // Успешное завершение программы
}