#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
const int N = 2;
int delta = 0;
int p = 1;
void MatrixSwap(float A[N][N], int ns, int tmp2)
{
int tmp;
for (int j = 0; j < N; j++)
{
tmp = A[tmp2][j];
A[tmp2][j] = A[ns][j];
A[ns][j] = tmp;
}
}
void MatrixDivide(float A[N][N], int &p, int &n)
{
float q;
int j = 0;
for (int i = n; i < N; i++)
{
q = A[i][n];
for (j = n; j < N; j++) {
if (q == 0)
{
for (int k = i; k < N; k++)
{
if (A[k][n] != 0)
{
MatrixSwap(A, i, k);
break;
}
else
if (k == N - 1)
{
cout << "Determinate = 0" << endl;
system("pause");
exit(0);
}
}
}
A[i][j] = A[i][j] / q;
p *= q;
}
}
}
void MatrixRemainder(float A[N][N], int &p, int &n)
{
int q;
for (int i = n + 1; i < N; i++)
{
for (int j = n; j + n < N; j++)
{
A[i][j] = A[i][j] - A[n][j];
}
}
n = n + 1;
}
void MatrixFilling(float A[N][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cin >> A[i][j];
}
}
cout << endl;
}
void MatrixFillingAuto(float A[N][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
A[i][j] = rand() % 100;
}
}
cout << endl;
}
void MatrixOutput(float A[N][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
cout << A[i][j] << " ";
}
cout << endl;
}
}
int main()
{
srand(time(NULL));
float A[N][N];
int p = 1;
int n = 0;
MatrixFilling(A);
do
{
MatrixDivide(A, p, n);
MatrixRemainder(A, p, n);
} while (n < N);
MatrixOutput(A);
cout << endl;
cout << p;
system("pause");
return 0;
}