====== Gauss-féle eliminációs eljárás ====== Lineáris egyenletrendszer megoldása. Az egyenletek együtthatóit a program a gauss.be állományból olvassa be. Pl: gauss.be 5 0 2 3 4 5 7 2 3 4 6 4 0 5 5 5 5 5 6 3 3 1 1 4 7 9 4 2 3 1 5 A program még nem teljesen kész. (Mit is kell tenni, ha nem találunk egy adott ismeretlenhez nem nulla együtthatót?) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace gauss { class Program { static int N; static double[,] A; static double[] B; static int[] valtozo; static void beolvasas() { StreamReader be = new StreamReader("gauss.be"); N = Convert.ToInt32(be.ReadLine()); A = new double[N, N]; B = new double[N]; valtozo = new int[N]; for (int i = 0; i < N; i++) { valtozo[i] = i; } for (int i = 0; i < N; i++) { string[] mezok = be.ReadLine().Split(' '); for (int j = 0; j < N; j++) { A[i, j] = Convert.ToDouble(mezok[j]); } B[i] = Convert.ToDouble(mezok[N]); } be.Close(); } static void kiir() { for (int i = 0; i < N; i++) { Console.Write("| "); for (int j = 0; j < N; j++) { Console.Write("{0:F2} ", A[i, j]); } Console.WriteLine(" | {0:F2} |", B[i]); } Console.WriteLine(); Console.ReadKey(); } static void oszlopcsere(int i, int j) { for (int sor = 0; sor < N; sor++) { double seged = A[sor, i]; A[sor, i] = A[sor, j]; A[sor, j] = seged; seged = valtozo[i]; valtozo[i] = valtozo[j]; valtozo[j] = (int)seged; } } static void sornormalas(int i) { double oszto = A[i, i]; for (int j = 0; j < N; j++) { A[i, j] = A[i, j] / oszto; } B[i] = B[i] / oszto; } static void valtozokiejtes(int i, int k) { double szorzo = A[k, i]; for (int j = 0; j < N; j++) { A[k, j] -= A[i, j] * szorzo; } B[k] -= B[i] * szorzo; } static void megoldas() { for (int i = 0; i < N; i++) { Console.WriteLine("X{0} = {1}", valtozo[i]+1, B[i]); } } static void Main(string[] args) { beolvasas(); kiir(); for (int i = 0; i < N; i++) { int j = i; while (j < N && A[i, j] == 0) j++; if (j >= N) Console.WriteLine("Baj van! (Végtelen sok megoldás van?)"); else { oszlopcsere(i, j); sornormalas(i); for (int k = 0; k < N; k++) { if (k != i) { valtozokiejtes(i, k); } } } kiir(); } megoldas(); Console.ReadKey(); } } } * [[informatika:programozas:feladatok:alap|Alapvető ismeretek (I/O, vezérlési szerkezetek]])