using
System;
using
System.Collections.Generic;
class
GFG
{
static
int
M = 10;
static
void
PrintMatrix(
float
[,]a,
int
n)
{
for
(
int
i = 0; i < n; i++)
{
for
(
int
j = 0; j <= n; j++)
Console.Write(a[i, j] +
" "
);
Console.WriteLine();
}
}
static
int
PerformOperation(
float
[,]a,
int
n)
{
int
i, j, k = 0, c, flag = 0;
for
(i = 0; i < n; i++)
{
if
(a[i, i] == 0)
{
c = 1;
while
((i + c) < n && a[i + c, i] == 0)
c++;
if
((i + c) == n)
{
flag = 1;
break
;
}
for
(j = i, k = 0; k <= n; k++)
{
float
temp = a[j, k];
a[j, k] = a[j + c, k];
a[j + c, k] = temp;
}
}
for
(j = 0; j < n; j++)
{
if
(i != j)
{
float
p = a[j, i] / a[i, i];
for
(k = 0; k <= n; k++)
a[j, k] = a[j, k] - (a[i, k]) * p;
}
}
}
return
flag;
}
static
void
PrintResult(
float
[,]a,
int
n,
int
flag)
{
Console.Write(
"Result is : "
);
if
(flag == 2)
Console.WriteLine(
"Infinite Solutions Exists"
);
else
if
(flag == 3)
Console.WriteLine(
"No Solution Exists"
);
else
{
for
(
int
i = 0; i < n; i++)
Console.Write(a[i, n] / a[i, i] +
" "
);
}
}
static
int
CheckConsistency(
float
[,]a,
int
n,
int
flag)
{
int
i, j;
float
sum;
flag = 3;
for
(i = 0; i < n; i++)
{
sum = 0;
for
(j = 0; j < n; j++)
sum = sum + a[i, j];
if
(sum == a[i, j])
flag = 2;
}
return
flag;
}
public
static
void
Main(String[] args)
{
float
[,]a = {{ 0, 2, 1, 4 },
{ 1, 1, 2, 6 },
{ 2, 1, 1, 7 }};
int
n = 3, flag = 0;
flag = PerformOperation(a, n);
if
(flag == 1)
flag = CheckConsistency(a, n, flag);
Console.WriteLine(
"Final Augmented Matrix is : "
);
PrintMatrix(a, n);
Console.WriteLine(
""
);
PrintResult(a, n, flag);
}
}