Preciso identificar se uma matriz quadrada de numeros inteiros é uma matriz identidade ou não. Se for matriz identidade ela tem que me retornar 1, e se não for precisa retornar 0 (matriz identidade é aquela em que a diagonal principal contém apenas 1s e o resto da matriz contém zeros). A função recebe como parâmetro a matriz de inteiros, usando a representação de matrizes através de ponteiro simples e um inteiro que indica a posição da matriz. Essa função deve obedecer o protótipo:
int ehMatrizIdentidade ( const int * mat, int n );
Estou desde ontem batendo cabeça com esse código e ainda não consegui fazer funcionar. Alguém pode me ajudar?
obs: usei o New porque no final de tudo os vetores tem que ser deletados.
#include <iostream>
using namespace std;
int ehMatrizIdentidade(const int ** mat, int n) {
bool control = true;
for(int i = 0; i<=n; i++){
for(int j = 0; j <= n; j++){
if(i==j){
if(mat[0][2] +j != 1){
control = false;
}
}else{
if(mat[0][2] +j != 0){
control = false;
}
}
}
}
if(control == true ){
return 1;
} else {
return 0;
}
}
int main(){
int** mat = new int*[3];
int i, j;
for(int i = 0; i <3; i++){
mat[i] = new int [3];
for(i=0; i <= 3; i++){
for(j=0;j <=3; j++){
cout<<"Insira os valores da matriz: ";
cin>> mat[i][j];
}
}
}
cout<< ehMatrizIdentidade(mat, 3);
delete[]mat;
}

