// 1a.cpp
#include<iostream>
#include<iomanip>
using namespace std;
void inicializar_matriz(int **p, int filas, int columnas);
void mostrar_matriz(int **p, int filas, int columnas);
bool es_simetrica(int **p, int filas, int columnas);
int main() {
int n = 0;
srand(time(nullptr));
cout << "n\t: "; cin >> n;
int** A = new int*[n]; // asignando espacio para el arreglo de direccines
A[0] = new int[n*n]; // asignando espacio para la matriz de bits
for (int j = 1; j < n; ++j) { // inicializando el arreglo de direcciones
A[j] = A[0] + j*n;
}
inicializar_matriz(A, n, n);
cout << "A\t=\n"; mostrar_matriz(A, n, n); cout << endl;
cout << "La matriz ";
if (!es_simetrica(A, n, n))
cout << "NO ";
cout << "es simetrica." << endl;
delete[] A[0]; // liberando espacio asignado para la matriz de enteros
delete[] A; // liberando espacio asignado para la matriz de direcciones
}
void inicializar_matriz(int **p, int filas, int columnas) {
for (int j = 0; j < filas; ++j)
for (int k = 0; k < columnas; ++k)
p[j][k] = rand()%2;
}
void mostrar_matriz(int **p, int filas, int columnas) {
for (int j = 0; j < filas; ++j) {
for (int k = 0; k < columnas; ++k)
cout << setw(4) << p[j][k];
cout << endl;
}
}
bool es_simetrica(int **p, int filas, int columnas) {
for (int j = 0; j < filas; ++j) {
for (int k = 0; k < j; ++k)
if (p[j][k] != p[k][j]) return false;
}
return true;
}