Witam. Mam problem z kodem. Jak w temacie - eliminacja. Po podaniu macierzy 3x4 wyskakują złe wartości.
Macierz wygląda następująco:
0 -1 2 -2
2 2 1 3
4 1 3 -1
Rozwiązanie powinno wyglądać tak, że wyskakują trzy x o wartościach -1, 2,4 , 0,2. Problem polega na tym aby po pierwsze wyświetlić całą tablicę i dodatkowo pod spodem te trzy x. Muszę również poprawić sposób wczytywania cyfr do macierzy, a szczerze gubię się w gąszczu tych pętli. Kod w chwili obecnej wygląda tak:
class Program
{
static void Main(string[] args)
{
const int n = 3;
float max = 0;
int r = 0;
float p = 0;
Console.WriteLine("Podaj A[1][1]: ");
float a11 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[1][2]: ");
float a12 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[1][3]: ");
float a13 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[1][4]: ");
float a14 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[2][1]: ");
float a21 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[2][2]: ");
float a22 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[2][3]: ");
float a23 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[2][4]: ");
float a24 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[3][1]: ");
float a31 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[3][2]: ");
float a32 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[3][3]: ");
float a33 = float.Parse(Console.ReadLine());
Console.WriteLine("Podaj A[3][4]: ");
float a34 = float.Parse(Console.ReadLine());
float[,] macierz = new float[,]
{
{a11,a12,a13,a14 },
{a21,a22,a23,a24 },
{a31,a32,a33,a34 }
};
for(int k = 0; k <n-1; k++)
{
max = macierz[k, k];
r = k;
for(int i = k; i < n; i++)
{
if(Math.Abs(macierz[i,k]) > Math.Abs(max))
{
max = macierz[i, k];
r = i;
}
}
if (max == 0)
{
Console.WriteLine("Macierz układu osobliwa.");
break;
}
else
{
for(int j=k; j < n+1;j++)
{
//int a = macierz[r,j];
macierz[k, j] = macierz[r, j];
//macierz[k,j]=a;
}
for(int j=k; j<n+1; j++)
{
macierz[k, j] = macierz[k, j] / max;
}
for(int i = 0; i < n-1; i++)
{
if(i!=k)
{
p = macierz[i, k];
for(int j = k; j < n+1; j++)
{
macierz[i, j] = macierz[i, j] - (p * macierz[k, j]);
}
}
}
}
}
for(int i = 0; i < macierz.GetLength(0); i++)
{
for(int j = 0; j < macierz.GetLength(1); j++)
{
Console.WriteLine(macierz[i,j] + " " + " \t");
}
Console.WriteLine();
}
}
}
Bardzo proszę aby ktoś mi po polsku, jak blondynce to wytłumaczył.