// Matriz simétrica.
// Una matriz es simétrica si es una matriz cuadrada, la cual tiene la característica de ser igual a su transpuesta.
#include <iostream>
using namespace std;
int main(){
// Declaro variables
int filas=0, columnas=0, a=0;
char condicion='V';
// Solicito se ingrese tamaño de matriz
cout<<"Ingrese número de filas: ";
cin>>filas;
cout<<"Ingrese número de columnas: ";
cin>>columnas;
// Cargo datos en la matriz
cout<<endl;
int matriz[filas][columnas]={};
for(int i=0;i<=filas-1;i++){
for(int j=0;j<=columnas-1;j++){
cout<<"Ingrese valor ["<<i<<"]["<<j<<"]";
cin>>matriz[i][j];
}
}
// Imprimo matriz[i][j]
cout<<endl<<"Matriz[i][j]:"<<endl;
for(int i=0;i<=filas-1;i++){
for(int j=0;j<=columnas-1;j++){
if(a==i){
cout<<matriz[a][j]<<" ";
}else{
a++;
cout<<endl<<matriz[a][j]<<" ";
}
}
}
// Vuelvo a inicializar la variable a=0
a=0;
// Imprimo matriz[j][i]
cout<<endl<<endl<<"Matriz[j][i]:"<<endl;
for(int j=0;j<=columnas-1;j++){
for(int i=0;i<=filas-1;i++){
if(a==j){
cout<<matriz[i][a]<<" ";
}else{
a++;
cout<<endl<<matriz[i][a]<<" ";
}
}
}
// Verificamos si es cuadrada y simétrica (NOTA: SE PODRÍA VERIFICAR SI ES CUADRADA AL PRINCIPIO DEL PROGRAMA SIN NECESIDAD DE PASAR POR TODA LA CARGA SI FILAS!=COLUMNAS)
if(filas==columnas){
for(int i=0;i<=filas-1;i++){
for(int j=0;j<=columnas-1;j++){
if(matriz[i][j]!=matriz[j][i]){
condicion='F';
break; // Si ya encuentro una que no coincide interrumpo el ciclo y muestro el mensaje indicando que no es simétrica.
}
}
}
} else {
condicion='F';
}
// Imprimo si es simétrica o no
cout<<endl<<endl;
if(condicion=='F'){
cout<<"La matriz no es simétrica.";
}else{
cout<<"La matriz es simétrica.";
}
return 0;
}