he echo un programa donde dada una matriz devuelva "si" si es simétrica y "no" si no lo es. Pero solo me imprime por pantalla "no" cuando no lo es, y cuando si lo es no me imprime nada. ¿Qué debo rectificar para que me imprima por pantalla "si" cuando si lo es?
Código:
#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
#include <iomanip>
using namespace std;
bool Esdiagonal(vector<vector<int> >M){
int i=0,j;
bool p=true;
while(i<M.size()-1 and p){
j=i+1;
while(j<M.size() and p){
if(M[i][j]!=M[j][i]){
p=false;
}
}
}
return p;
}
int main(){
int m,n;
cout<<"introduzca el numero de filas"<<endl;
cin>>m;
cout<<"introduzca el numero de columnas"<<endl;
cin>>n;
vector<vector<int> > matriz ( m, vector<int> ( n ) );
int k = 0;
for ( int i = 0; i < m; i++ ) {
for ( int j = 0; j < n; j++ ){
cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
cin >>matriz[i][j];
//matriz[i][j] = k++;/*y desactivas esta*/
}
}
cout<<'\n';
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < m; j++ )
cout<< setw ( 3 ) << matriz[i][j] <<' ';
cout<<'\n';
}
if(Esdiagonal(matriz)){cout<<"si"<<endl;}
else{cout<<"no"<<endl;}
// muestra(matriz,n,m);
// transpon(matriz,n,m);
system("pause");
return 0;
}
¡Gracias por la ayuda!