View difference between Paste ID: GXwkxJWM and wdg56kWS
SHOW: | | - or go back to the newest paste.
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.IO;
7
using System.Globalization;
8
9
namespace Matrix
10
{
11-
        {            
11+
12-
            string dataName ="data" + Console.ReadLine();
12+
13-
            dataName += ".txt";
13+
14-
            
14+
15-
            var data = File.ReadAllLines(dataName);
15+
            Console.WriteLine("введите название файла *data#.txt*");
16-
            
16+
            int NumbX = 0;
17
            var userInput = Console.ReadLine();
18-
            
18+
            var data = File.ReadAllLines(userInput);
19
            var numberOfur = int.Parse(data[0]);
20-
            
20+
21
            var sqrs = new double[numberOfur];
22-
            
22+
23
            var determinant = CalculateDeterminat(mathrix, sqrs);
24-
            
24+
25
            foreach (var a in answers)
26-
            
26+
27
                Console.WriteLine($"X{NumbX} == {a}");
28-
            
28+
                NumbX++;
29-
            Int16 i = 0;
29+
30-
            Console.WriteLine(dataName);
30+
31-
            foreach (var answer in answers)
31+
32
33-
                Console.WriteLine("x[{0}] = {1}",i,Math.Round(answer,3));
33+
34-
                ++i;
34+
35
        private static void InitialiseData(double[,] matrix, double[] sqrs, string[] data, int numberOfur)
36
        {
37
            for (int i = 1; i < numberOfur + 1; i++)
38
            {
39
                var dataInLine = data[i].Split().Select(x => double.Parse(x, CultureInfo.InvariantCulture)).ToArray();
40
                for (int j = 0; j < numberOfur; j++)
41
                {
42
                    matrix[i - 1, j] = dataInLine[j];
43
                }
44
                sqrs[i - 1] = dataInLine[numberOfur];
45
            }
46
        }
47
48
        private static double[] CalculateAnswers(double[,] mathrix, double[] sqrs, double determinant)
49
        {
50
            var answers = new double[sqrs.Length];
51
            for (int i = 0; i < sqrs.Length; i++)
52
            {
53
                var cahce = new double[sqrs.Length];
54
                for (int j = 0; j < sqrs.Length; j++)
55
                {
56
                    cahce[j] = mathrix[j, i];
57
                    mathrix[j, i] = sqrs[j];
58
                }
59
                var matrix = new double[sqrs.Length, sqrs.Length];
60
                for (int a = 0; a < sqrs.Length; a++)
61
                    for (int b = 0; b < sqrs.Length; b++)
62
                        matrix[a, b] = mathrix[a, b];
63
                answers[i] = CalculateDeterminat(matrix, new double[sqrs.Length]) / determinant;
64
                for (int j = 0; j < sqrs.Length; j++)
65
                {
66
                    mathrix[j, i] = cahce[j];
67
                }
68
            }
69
            return answers;
70
        }
71
72
        private static double CalculateDeterminat(double[,] matrix, double[] sqrs)
73
        {
74
            var determinant = matrix[0, 0];
75
            var index = 0;
76
            while (index < sqrs.Length - 1)
77
            {
78
                for (int i = index; i < sqrs.Length - 1; i++)
79
                {
80
                    var delitel = matrix[i + 1, index] / matrix[index, index];
81
                    for (int j = 0; j < sqrs.Length; j++)
82
                    {
83
                        matrix[i + 1, j] -= matrix[index, j] * delitel;
84
85
                    }
86
                    sqrs[i + 1] -= sqrs[index] * delitel;
87
                }
88
                index++;
89
                determinant *= matrix[index, index];
90
91
            }
92
            return determinant;
93
        }
94
    }
95
}