#include <iostream>
using namespace std;

class Sqmatrix {
	int x;
	int **elem;

public:
	Sqmatrix();//конструктор по умолчанию
	Sqmatrix(int x);//конструктор с пользовательскими параметрами
	~Sqmatrix(); //деструктор
	void show();
	void opred();
	void transpor();

	void delet();
};

int main() {

	Sqmatrix **arr = new Sqmatrix*[20];

	arr[0] = new Sqmatrix();
	arr[0]->show();//проверка конструктора
	for (int i = 0; i <1; i++) {
		delete[]arr[i];
	}
	delete[] arr;
	return 0;
}

Sqmatrix::Sqmatrix() :x(2), elem(new int *[x]) { //по умолчанию создаем матрицу 2х2 заполненную числами 1, 2, 3, 4
	for (int i = 0; i < x; i++) {
		elem[i] = new int[x];
	}
	for (int i = 0; i < x; i++) {
		for (int j = 0; j < x; j++) {
			elem[i][j] = j + i * 2 + 1;
		}
	}
}

Sqmatrix::Sqmatrix(int x) {  //матрица по данным ползователя
	this->x = x;
	elem = new int *[x];
	for (int i = 0; i < x; i++) {
		elem[i] = new int[x];
	}
	for (int i = 0; i < x; i++) {
		for (int j = 0; j < x; j++) {
			cout << "Введите элемент a" << i + 1 << j + 1 << endl;
			cin >> elem[i][j];
		}
	}
}

Sqmatrix::~Sqmatrix() {
	for (int i = 0; i < x; ++i) {
		delete[]elem[i];
	}
	delete[] elem;
}

void Sqmatrix::show() {
	for (int i = 0; i < x; i++) {
		for (int j = 0; j < x; j++) {
			cout << elem[i][j] << "\t";
		}
		cout << endl;
	}
}

void Sqmatrix::delet() {
	for (int i = 0; i < x; ++i) {
		delete[]elem[i];
	}
	delete[] elem;
}