#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; // Успешное завершение программы
}