Найти решение системы линейных алгебраических уравнений {111=1 211+222=2 … 11+22+⋯+= Если задана действительная матрица []× и массив свободных членов []. Для решения СЛАУ можно использовать метод Крамера.
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication_Kramer { class Program { static void Main(string[] args) { Console.WriteLine("Привет! назови себя =)"); string name; name = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("" + name + "! данная программа расчитана для вычесления СЛАУ методом Крамера!"); Console.WriteLine(); Console.WriteLine(" Особенности данной программы:"); Console.WriteLine(" -размерность системы от 2 до 3 линейных уравнений"); Console.WriteLine(" -определитель не должен быть равен 0"); Console.WriteLine(" -в консоль должны записываться только численные выражения"); Console.WriteLine(); Console.WriteLine("" + name + " нажми любую клавишу для ночала работы"); Console.ReadKey(); int n; /* количество уравнений */ double[,] A = new double[3, 3]; /* матрица системы */ double[] b = new double[3]; /* вектор правых частей */ double[] x = new double[3]; /* вектор решения */ Console.WriteLine(); Console.WriteLine(); Console.Write("Введите количество уравнений 2..3 "); n = Convert.ToInt32(Console.ReadLine()); if (n > 3 || n <= 1) { Console.WriteLine("Ошибка в размерности системы (n=2,3)"); Console.WriteLine("После нажатия любой клавиши программа завершит свою работу . . ."); Convert.ToInt32(Console.ReadLine()); return; } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { Console.Write("A{0}{1} -> ", i, j); A[i, j] = Convert.ToDouble(Console.ReadLine()); } for (int i = 0; i < n; i++) { Console.Write("b{0} -> ", i); b[i] = Convert.ToDouble(Console.ReadLine()); } if (SLAU_kramer(n, A, b, x) == 1) { Console.WriteLine("Система не имеет решение"); Convert.ToInt32(Console.ReadLine()); return; } else for (int i = 0; i < n; i++) Console.WriteLine("x" + i + " = " + x[i]); Console.ReadLine(); } private static double det(int n, double[,] B) //метод вычисляющий определитель матрицы { if (n == 2) return B[0, 0] * B[1, 1] - B[0, 1] * B[1, 0]; return B[0, 0] * (B[1, 1] * B[2, 2] - B[1, 2] * B[2, 1]) - B[0, 1] * (B[1, 0] * B[2, 2] - B[1, 2] * B[2, 0]) + B[0, 2] * (B[1, 0] * B[2, 1] - B[1, 1] * B[2, 0]); } static void equal(int n, double[,] A, double[,] B) //– метод присваивающий матрицы ( ), где n-размерность матриц { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) A[i, j] = B[i, j]; } static void change(int n, int N, double[,] A, double[] b) { for (int i = 0; i < n; i++) A[i, N] = b[i]; } public static int SLAU_kramer(int n, double[,] A, double[] b, double[] x) //метод реализующий метод Крамера { double[,] An = new double[3, 3]; double det1 = det(n, A); if (det1 == 0) return 1; for (int i = 0; i < n; i++) { equal(n, An, A); change(n, i, An, b); x[i] = det(n, An) / det1; } return 0; } } } C# using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication_Kramer { class Program { static void Main(string[] args) { Console.WriteLine("Привет! назови себя =)"); string name; name = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("" + name + "! данная программа расчитана для вычесления СЛАУ методом Крамера!"); Console.WriteLine(); Console.WriteLine(" Особенности данной программы:"); Console.WriteLine(" -размерность системы от 2 до 3 линейных уравнений"); Console.WriteLine(" -определитель не должен быть равен 0"); Console.WriteLine(" -в консоль должны записываться только численные выражения"); Console.WriteLine(); Console.WriteLine("" + name + " нажми любую клавишу для ночала работы"); Console.ReadKey(); int n; /* количество уравнений */ double[,] A = new double[3, 3]; /* матрица системы */ double[] b = new double[3]; /* вектор правых частей */ double[] x = new double[3]; /* вектор решения */ Console.WriteLine(); Console.WriteLine(); Console.Write("Введите количество уравнений 2..3 "); n = Convert.ToInt32(Console.ReadLine()); if (n > 3 || n <= 1) { Console.WriteLine("Ошибка в размерности системы (n=2,3)"); Console.WriteLine("После нажатия любой клавиши программа завершит свою работу . . ."); Convert.ToInt32(Console.ReadLine()); return; } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { Console.Write("A{0}{1} -> ", i, j); A[i, j] = Convert.ToDouble(Console.ReadLine()); } for (int i = 0; i < n; i++) { Console.Write("b{0} -> ", i); b[i] = Convert.ToDouble(Console.ReadLine()); } if (SLAU_kramer(n, A, b, x) == 1) { Console.WriteLine("Система не имеет решение"); Convert.ToInt32(Console.ReadLine()); return; } else for (int i = 0; i < n; i++) Console.WriteLine("x" + i + " = " + x[i]); Console.ReadLine(); } private static double det(int n, double[,] B) //метод вычисляющий определитель матрицы { if (n == 2) return B[0, 0] * B[1, 1] - B[0, 1] * B[1, 0]; return B[0, 0] * (B[1, 1] * B[2, 2] - B[1, 2] * B[2, 1]) - B[0, 1] * (B[1, 0] * B[2, 2] - B[1, 2] * B[2, 0]) + B[0, 2] * (B[1, 0] * B[2, 1] - B[1, 1] * B[2, 0]); } static void equal(int n, double[,] A, double[,] B) //– метод присваивающий матрицы ( ), где n-размерность матриц { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) A[i, j] = B[i, j]; } static void change(int n, int N, double[,] A, double[] b) { for (int i = 0; i < n; i++) A[i, N] = b[i]; } public static int SLAU_kramer(int n, double[,] A, double[] b, double[] x) //метод реализующий метод Крамера { double[,] An = new double[3, 3]; double det1 = det(n, A); if (det1 == 0) return 1; for (int i = 0; i < n; i++) { equal(n, An, A); change(n, i, An, b); x[i] = det(n, An) / det1; } return 0; } } } --- Сообщение объединено с предыдущим 2 ноя 2021 нашел такое, надеюсь правильно понял условие