#include <random>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
void escribir_matriz(int **A, int f, int c){
for(int i=0; i<f; i++) {
for(int j=0; j<c; j++)
cout<<setw(4)<<*(*A +c*i+j);
cout<<endl;
}
}
void leer_matriz (int ** A, int f, int c){
// generador de numeros aleatorios
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int> dist(-10,10);
// este codigo no es obligatorio
// el estudiante puede escribir otras versiones
for(int i=0; i<f; i++)
for(int j=0; j<c; j++)
*(*A+c*i+j) = dist(mt);
}
bool esDefinidaPositiva(int ** A, int f, int c){
bool resultado=true;
for (int i=0; i<f; i++){
int sumafila=0;
for (int j=0; j<c; j++)
sumafila += ((i==j) ? 1 : -1)*abs(*(*A + c*i+j)) ;
if (!(resultado = (sumafila>=0)))
break;
}
return resultado;
}
int main(){
const int MAXCOL = 3;
const int MAXFIL = 3;
int A[MAXFIL][MAXCOL];
//int A[MAXFIL][MAXCOL]={ {-4,2,1},{2,5,1},{2,3,-7}};
//test de una matriz definida positiva
int *a = &A[0][0];
leer_matriz(&a, MAXFIL,MAXCOL);
escribir_matriz(&a, MAXFIL,MAXCOL);
if(esDefinidaPositiva(&a, MAXFIL, MAXCOL)){
cout<<"Es definida positiva"<<endl;
}else{
cout<<"No es definida positiva"<<endl;
}
}