#include<iostream>
#include<iomanip>
using namespace std;
const int MAX = 100;
void gaussJordan(double mat[MAX][MAX], int n) {
for (int i = 0; i < n; i++) {
// Haciendo la diagonal principal igual a 1
for (int j = 0; j < n; j++) {
if (i != j) {
double ratio = mat[j][i] / mat[i][i];
for (int k = 0; k < n * 2; k++) {
mat[j][k] -= ratio * mat[i][k];
}
}
}
}
// Haciendo que los elementos de la diagonal sean 1
for (int i = 0; i < n; i++) {
double divisor = mat[i][i];
for (int j = 0; j < n * 2; j++) {
mat[i][j] /= divisor;
}
}
}
int main() {
int n;
cout << "Ingrese el tamaño de la matriz cuadrada (n): ";
cin >> n;
cout << "Ingrese los elementos de la matriz extendida (filas x columnas):" << endl;
double mat[MAX][MAX * 2];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n * 2; j++) {
cin >> mat[i][j];
}
}
gaussJordan(mat, n);
cout << "La matriz resultante es:" << endl;
for (int i = 0; i < n; i++) {
for (int j = n; j < n * 2; j++) {
cout << setw(10) << mat[i][j] << " ";
}
cout << endl;
}
return 0;
}