Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 14.03.2020
Сообщений: 28

Реализации решение СЛАУ методом Гаусса

14.03.2020, 12:41. Показов 5507. Ответов 5

Студворк — интернет-сервис помощи студентам
Народ, есть рабочий код для решений СЛАУ методом Гаусса, но возникает ошибка что надо добавить статический метод Main, а я незнаю куда его нужно вставить.

Код программы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
using System;
 
namespace Gaussa
{
    class Matrix
    {
            #region Описание переменных
            int i, j, m, n, nSize, PosColumn, PosRow;
            double[,] nArray = new double[MAXSIZE, MAXSIZE + 1];
            double[,] nMatrix = new double[MAXSIZE, MAXSIZE + 1];
            int[] nOrder = new int[MAXSIZE];
            double[] dTotal = new double[MAXSIZE];
            double[] e = new double[MAXSIZE];
            double dMax1, dMax2, dSum;
        public const double EPS = 0.00000000001;
        public const int MAXSIZE = 25; //максимально возможный размер матрицы
        #endregion
    
        // Конструктор
        public Matrix()
        {
            //ввод размерности массива
            do
            {
                Console.Write("Введите размерность массива: ");
                nSize = Convert.ToInt32(Console.ReadLine());
 
 
                //проверка размерности массива
                if (nSize > MAXSIZE)
                {
                    Console.WriteLine("Размерность выходит за границу допустимого диапазона!");
                    Console.ReadKey();
 
                }
            } while (nSize > MAXSIZE);
        }
 
 
 
        #region Ввод данных
        public void InputFromKeyboard()
        {
            for (i = 0; i < nSize; i++)
                for (j = 0; j <= nSize; j++)
                    nArray[i, j] = Convert.ToDouble(Console.ReadLine());
 
            VariableOrder();
        }
 
 
 
        public void InputFromVariant()
        {
            nSize = 5;
 
            nArray[0, 0] = 5; nArray[0, 1] = 1.2; nArray[0, 2] = -2; nArray[0, 3] = 2.4; nArray[0, 4] = 1; nArray[0, 5] = 9;
            nArray[1, 0] = 1.8; nArray[1, 1] = 5; nArray[1, 2] = 1; nArray[1, 3] = 2.2; nArray[1, 4] = 4; nArray[1, 5] = 7;
            nArray[2, 0] = 3; nArray[2, 1] = 1.8; nArray[2, 2] = 1; nArray[2, 3] = 1.6; nArray[2, 4] = 1; nArray[2, 5] = 2.5;
            nArray[3, 0] = 4.5; nArray[3, 1] = 2; nArray[3, 2] = 4; nArray[3, 3] = 2.6; nArray[3, 4] = 2; nArray[3, 5] = 9;
            nArray[4, 0] = 7; nArray[4, 1] = 1; nArray[4, 2] = 2.4; nArray[4, 3] = 0; nArray[4, 4] = 9; nArray[4, 5] = -8;
 
            VariableOrder();
        }
 
 
        public void InputRandom()
        {
            Random rand = new Random();
            int k = rand.Next(-1, 3);
 
            for (i = 0; i < nSize; i++)
                for (j = 0; j <= nSize; j++)
                    nArray[i, j] = rand.Next(-100, 100) / Math.Pow(10, k);
 
            VariableOrder();
 
        }
 
        public void VariableOrder()
        {
            //заполнение промежуточного массива для хранения порядка переменных
            for (i = 0; i < nSize; i++)
                nOrder[i] = i;
        }
 
        #endregion
 
        //Вывод матрицы на экран
        public void Output()
        {
            for (i = 0; i < nSize; i++)
            {
                for (j = 0; j <= nSize; j++)
                    Console.Write("{0:F2}\t", nArray[i, j]);
                Console.WriteLine();
            }
        }
               
        //замена рядов в массиве
        public void ReplaceRows(int i, int n)
        {
            double Temp;
            for (j = 0; j <= nSize; j++)
            {
                Temp = nArray[i, j];
                nArray[i, j] = nArray[n, j];
                nArray[n, j] = Temp;
            }
        }
        
        //замена столбцов в массиве
        public void ReplaceColumns(int i, int n)
        {
            double Temp;
            for (j = 0; j < nSize; j++)
            {
                Temp = nArray[j, i];
                nArray[j, i] = nArray[j, n];
                nArray[j, n] = Temp;
            }
            //фиксируем перестановку столбцов
            int Elem = nOrder[i];
            nOrder[i] = nOrder[n];
            nOrder[n] = Elem;
        }
        //пересохранение исходного массива для проверки в конце
        public void Save()
        {
            for (i = 0; i < nSize; i++)
                for (j = 0; j <= nSize; j++)
                    nMatrix[i, j] = nArray[i, j];
        }
        //Решение методом Гауса
        public void Solve()
        {
            for (i = 0; i < nSize; i++)
            {
                //поиск максимального по модулю элемента в массиве(подмассиве)
                dMax1 = nArray[i, i];
                dMax2 = nArray[i, i];
                PosColumn = i;
                PosRow = i;
 
                for (n = i; n < nSize; n++)
                {
                    for (m = i; m < nSize; m++)
 
                        if (Math.Abs(nArray[n, m]) > Math.Abs(dMax1))
                        {
                            dMax2 = dMax1;
                            dMax1 = nArray[n, m];
                            PosColumn = m;
                            PosRow = n;
                        }
                }
                //условие, когда система несовместна
                if (dMax1 == 0 && dMax2 == 0)
                {
                    Console.WriteLine("Система не имеет решения");
                    Console.ReadKey();
                    Environment.Exit(0);
                }
                //замена в случае необходимости строк
                if (PosColumn != i)
                    ReplaceColumns(i, PosColumn);
                
                //замена в случае необходимости столбцов
                if (PosRow != i)
                    ReplaceRows(i, PosRow);
 
                //делим i-ю строку на диагональный элемент
                for (n = i; n <= nSize; n++)
                    if (nArray[i, n] == 0 && dMax1 < 0)
                        nArray[i, n] = 0;
                    else
                        nArray[i, n] /= dMax1;
                //обнуляем все элементы, стоящие под диагональным
                for (j = nSize - 1; j > i; j--)
                    if (nArray[j, i] != 0)
                    {
                        double dElem = nArray[j, i];
                        for (n = i; n <= nSize; n++)
                        {
                            if (nArray[j, n] == 0 && dElem < 0)
                                nArray[j, n] = 0;
                            else
                                nArray[j, n] /= dElem;
 
                            if (Math.Abs(nArray[j, n] - nArray[i, n]) < EPS)
                                nArray[j, n] = 0;
                            else
                                nArray[j, n] -= nArray[i, n];
                        }
                    }
            }
 
            //Вывод треугольной матрицы
            Console.WriteLine("Треугольная матрица:");
            Output();
 
            //получение корня, стоящего в последнем столбце значимой матрицы
            dTotal[nSize - 1] = nArray[nSize - 1, nSize] / nArray[nSize - 1, nSize - 1];
 
            //получение всех остальных корней
            for (i = nSize - 2; i >= 0; i--)
            {
                dSum = 0;
                for (j = nSize - 1; j > i; j--)
                    dSum += nArray[i, j] * dTotal[j];
                if (Math.Abs(nArray[i, nSize] - dSum) < EPS)
                    dTotal[i] = 0;
                else
                    dTotal[i] = (nArray[i, nSize] - dSum) / nArray[i, i];
            }
 
            //восстановление порядка переменных
            for (i = 0; i < nSize; i++)
                for (j = 0; j < nSize; j++)
                    if (i == nOrder[j])
                        e[i] = dTotal[j];
 
            //вывод вектора с решением системы
            Console.WriteLine("Решение системы:");
            for (i = 0; i < nSize; i++)
                Console.WriteLine("{0:F2}", e[i]);
 
            //проверка полученных результатов
            Console.WriteLine("Ответ:");
            for (i = 0; i < nSize; i++)
            {
                double dSum = 0;
                for (j = 0; j < nSize; j++)
                    dSum += nMatrix[i, j] * e[j];
                dTotal[i] = dSum;
                Console.WriteLine("{0:F2}", dTotal[i]);
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2020, 12:41
Ответы с готовыми решениями:

Решение СЛАУ методом ГАУССА
По роду деятельности зачастую необходимо решать СЛАУ вида A*x=b A x b До недавних пор использовал библиотеку ALGLIB для .NET ...

Решение СЛАУ методом Гаусса
Привет всем! уже сбился с ног в поисках работающего кода для решения СЛАУ методом Гаусса, буду очень благодарен если кто подкинет пример...

Решение СЛАУ(СЛАР) методом Гаусса
Можете написать программу, для решения СЛАУ методом Гаусса на c#! Вы ее писали, но с классами! реализуйте, пожалуйста ее без классов!...

5
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
14.03.2020, 13:35
Лучший ответ Сообщение было отмечено Zulan1997 как решение

Решение

Цитата Сообщение от Zulan1997 Посмотреть сообщение
добавить статический метод Main
В отдельном файле
C#
1
2
3
4
5
6
7
8
namespace Gaussa
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Matrix matrix = new Matrix();
1
0 / 0 / 0
Регистрация: 14.03.2020
Сообщений: 28
14.03.2020, 14:19  [ТС]
Спасибо большое, вот теперь ошибка кроется matrix.ReplaceRows(int i, int n); и matrix.ReplaceColumns(int i, int n); якобы не допустимый термин int. И имя i и n не существует в текущем контексте

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
    {
 
        static void Main(string[] args)
        {
            Matrix matrix = new Matrix();            
            matrix.InputFromKeyboard();
            matrix.InputFromVariant();
            matrix.InputRandom();
            matrix.VariableOrder();
            matrix.Output();
            matrix.ReplaceRows(int i, int n);
            matrix.ReplaceColumns(int i, int n);
            matrix.Save();
            matrix.Solve();
 
        }
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
14.03.2020, 15:00
Лучший ответ Сообщение было отмечено Zulan1997 как решение

Решение

Цитата Сообщение от Zulan1997 Посмотреть сообщение
вот теперь ошибка кроется matrix.ReplaceRows(int i, int n)
Типы параметров задаются при объявлении метода.
А при его вызове надо задавать значение.
C#
1
2
            matrix.ReplaceRows(1, 2);
            matrix.ReplaceColumns(3, 1);
Добавлено через 2 минуты
Посмотрите пример - делал когда-то

Сам класс.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
namespace ConsoleApp1908
{
    /// <summary>Класс с методами расширения для матрицю
    /// Вычисления по методу Гаусса</summary>
    public static class GaussMethodsMatrices
    {
        /// <summary>Детериминант матрицы</summary>
        /// <param name="matrix">Матрица</param>
        /// <returns>Double - детерминант</returns>
        public static double Determinant(this double[,] matrix)
        {
            int rows = matrix.GetLength(0);
            if (rows != matrix.GetLength(1))
                throw new ArgumentException(nameof(matrix), "Столбцов должно быть столько же сколько строк");
 
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows];
                for (int col = 0; col < rows; col++)
                    matr[row][col] = matrix[row, col];
            }
 
            return _Determinant(matr);
        }
 
        /// <summary>Детериминант матрицы</summary>
        /// <param name="matrix">Матрица</param>
        /// <returns>Double - детерминант</returns>
        public static double Determinant(this double[][] matrix)
        {
            int rows = matrix.Length;
            if (matrix.Any(m => m.Length != rows))
                throw new ArgumentException(nameof(matrix), "Столбцов должно быть столько же сколько строк");
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows];
                for (int col = 0; col < rows; col++)
                    matr[row][col] = matrix[row][col];
            }
 
            return _Determinant(matr);
        }
 
        /// <summary>Детериминант матрицы</summary>
        /// <param name="matrix">Матрица</param>
        /// <returns>Double - детерминант</returns>
        /// <remarks>Приватный метод изменяющий полученную матрицу</remarks>
        private static double _Determinant(this double[][] matr)
        {
            int rows = matr.Length;
            double deter = 1;
            for (int row = 0; row < rows; row++)
            {
                deter *= LineSwapping(matr, row);
                double num = matr[row][row];
                if (num == 0)
                    return 0.0;
                deter *= num;
                matr[row][row] = 1.0;
                for (int col = row + 1; col < rows; col++)
                    matr[row][col] /= num;
 
                for (int rrow = row + 1; rrow < rows; rrow++)
                {
                    double nnum = matr[rrow][row];
                    matr[rrow][row] = 0.0;
                    for (int col = row + 1; col < rows; col++)
                        matr[rrow][col] = matr[rrow][col] - nnum * matr[row][col];
                }
            }
 
            return deter;
        }
 
        /// <summary>Решение матрицы с ветором в последней колонке</summary>
        /// <param name="matrix">Матрица</param>
        /// <returns>Вектор решений</returns>
        public static double[] SLE(this double[,] matrix)
        {
            int rows = matrix.GetLength(0);
            if (rows != matrix.GetLength(1) - 1)
                throw new ArgumentException(nameof(matrix), "Столбцов должно быть больше строк только на 1");
 
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows + 1];
                for (int col = 0; col <= rows; col++)
                    matr[row][col] = matrix[row, col];
            }
 
            return _SLE(matr);
        }
        /// <summary>Решение матрицы с ветором</summary>
        /// <param name="matrix">Матрица</param>
        /// <param name="vector">Вектор</param>
        /// <returns>Вектор решений</returns>
        public static double[] SLE(this double[,] matrix, double[] vector)
        {
            int rows = matrix.GetLength(0);
            if (rows != matrix.GetLength(1))
                throw new ArgumentException(nameof(matrix), "Столбцов и строк должно быть олинаковым");
            if (rows != vector.Length)
                throw new ArgumentException(nameof(vector), "Длина вектора решений должна быть равна количеству строк матрицы");
 
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows + 1];
                for (int col = 0; col < rows; col++)
                    matr[row][col] = matrix[row, col];
                matr[row][rows] = vector[row];
            }
 
            return _SLE(matr);
        }
 
        /// <summary>Решение матрицы с ветором в последней колонке</summary>
        /// <param name="matrix">Матрица</param>
        /// <returns>Вектор решений</returns>
        public static double[] SLE(double[][] matrix)
        {
            int rows = matrix.Length;
            if (matrix.Any(m => m.Length != rows + 1))
                throw new ArgumentException(nameof(matrix), "Столбцов должно быть больше строк только на 1");
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows + 1];
                for (int col = 0; col <= rows; col++)
                    matr[row][col] = matrix[row][col];
            }
 
            return _SLE(matr);
        }
 
        /// <summary>Решение матрицы с ветором</summary>
        /// <param name="matrix">Матрица</param>
        /// <param name="vector">Вектор</param>
        /// <returns>Вектор решений</returns>
        public static double[] SLE(this double[][] matrix, double[] vector)
        {
            int rows = matrix.GetLength(0);
            if (rows != matrix.GetLength(1))
                throw new ArgumentException(nameof(matrix), "Столбцов и строк должно быть олинаковым");
            if (rows != vector.Length)
                throw new ArgumentException(nameof(vector), "Длина вектора решений должна быть равна количеству строк матрицы");
 
 
            double[][] matr = new double[rows][];
            for (int row = 0; row < rows; row++)
            {
                matr[row] = new double[rows + 1];
                for (int col = 0; col < rows; col++)
                    matr[row][col] = matrix[row][col];
                matr[row][rows] = vector[row];
            }
 
            return _SLE(matr);
        }
 
        /// <summary>Решение матрицы с ветором</summary>
        /// <param name="matrix">Матрица</param>
        /// <param name="vector">Вектор</param>
        /// <returns>Вектор решений</returns>
        /// <remarks>Приватный метод изменяющий матрицу</remarks>
        private static double[] _SLE(double[][] matr)
        {
            int rows = matr.Length;
            for (int row = 0; row < rows; row++)
            {
                LineSwapping(matr, row);
                double num = matr[row][row];
                if (num == 0)
                    return null;
                matr[row][row] = 1.0;
                for (int col = row + 1; col <= rows; col++)
                    matr[row][col] /= num;
 
                for (int rrow = 0; rrow < rows; rrow++)
                {
                    if (rrow == row)
                        continue;
 
                    double nnum = matr[rrow][row];
                    matr[rrow][row] = 0.0;
                    for (int col = row + 1; col <= rows; col++)
                        matr[rrow][col] = matr[rrow][col] - nnum * matr[row][col];
 
                }
            }
 
            double[] vect = new double[rows];
            for (int row = 0; row < rows; row++)
                vect[row] = matr[row][rows];
 
            return vect;
        }
 
        /// <summary>Перестановка строк матрицы для получения на диагонали 
        /// ближайшего к единице значения</summary>
        /// <param name="matr">Матрица</param>
        /// <param name="col">Колонка</param>
        /// <remarks>Для решения методом Гаусса на диагонали должен быть элемент ближайший 
        /// к единице. Для этого среди строк находящихся на диогонали и ниже определяется
        /// строка с ближайшим элементом. И эта строка меняется
        /// местами диагональной строкой.</remarks>
        private static int LineSwapping(double[][] matr, int col)
        {
            int rows = matr.Length;
            double max = 0;
            int rowMax = -1;
            for (int row = col; row < rows; row++)
            {
                double num = matr[row][col];
                if (num < 0)
                    num = -num;
                if (num > 1)
                    num = 1.0 / num;
                if (num > max)
                {
                    max = num;
                    rowMax = row;
                }
            }
 
            if (rowMax > col)
            {
                var temp = matr[col];
                matr[col] = matr[rowMax];
                matr[rowMax] = temp;
                return -1;
            }
            return 1;
        }
    }
}
И его использование
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    class Program
    {
        static void Main(string[] args)
        {
 
            /// Решение СЛАУ
            var vect = new double[,]
            {
                {5, 2, 7},
                {2, 1, 9}
            }
            .SLE();
 
            /// Решение СЛАУ
            vect = new double[,]
            {
                {5, 2},
                {2, 1}
            }
            .SLE(new double[] { 7, 9 });
 
            /// Получение определителя
            var det = new double[,]
            {
                {0, 1, 2},
                {3, 4, 5},
                {1, 1, 3}
            }
            .Determinant();
 
            /// Получение определителя
            det = new double[][]
            {
              new double[]  {5, 2},
              new double[]  {2, 1}
            }
            .Determinant();
 
            Console.ReadLine();
1
0 / 0 / 0
Регистрация: 16.04.2020
Сообщений: 5
25.04.2020, 14:12
Где в коде участок рассчитывающий определитель?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
25.04.2020, 20:22
Цитата Сообщение от Nuramok Посмотреть сообщение
Где в коде участок рассчитывающий определитель?
Методы Determinant и метод LineSwapping.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2020, 20:22
Помогаю со студенческими работами здесь

Решение СЛАУ методом Гаусса. Ошибка
Добрый день/утро/вечер! Хочу прописать решение СЛАУ методом Гаусса ( https://ru.wikipedia.org/wiki/Метод_Гаусса найдите на странице через...

Програмное решение СЛАУ методом гаусса
ребята прошу очень помощи с кодом))) за ранее спасибочки)))))))

Решение СЛАУ методом Гаусса, с определённой точностью
Доброго дня! Для заданной системы линейных уравнений (4 уравнения), найти решение методом Гаусса с точностью Е=0.0001. Можете подсказать,...

Решение СЛАУ методом Гаусса, с определённой точностью
Есть код, для решения СЛАУ методом Гаусса. Но не могу понять, как добавить точность (е=0.0001). Может кто-то подсказать? using System;...

Ошибка точки входа. Решение СЛАУ методом Гаусса
Добрый день! Пишу программу для решения заданной СЛАУ методом Гауссом. Отдельные части программы работают правильно. При компиляции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru