Форум программистов, компьютерный форум CyberForum.ru

Нужно сделать задание по c++! Через 3 часа нужно сдать! - C++

Восстановить пароль Регистрация
 
egor11223
0 / 0 / 0
Регистрация: 18.06.2013
Сообщений: 9
20.06.2014, 12:08     Нужно сделать задание по c++! Через 3 часа нужно сдать! #1
ТРЕБОВАНИЯ К
ВЫПОЛНЕНИЮ ЗАДАНИЙ:

Требования к выполнению задания №1:

1.
Требуется решить систему линейных алгебраических систем
уравнений четвертого порядка методом Гаусса.

2.
Разработать блок-схему алгоритма и программу для
решения этой задачи в системе
программирования Turbo C (Borland C++).

Требования к выполнению задания №2:

1. Требуется
исследовать поведение функции в среде
программирования Turbo C
(Borland C++) своего варианта задания предварительно
разработав блок-схему алгоритма и программу на языке С или С++.\
[cut]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2014, 12:08     Нужно сделать задание по c++! Через 3 часа нужно сдать!
Посмотрите здесь:

Помогите, умоляю..... нужно сдать лабу..... срочно.... а нифига не получается.... я девушка, сразу поясняю..) C++
Найти сумму (Ребят, пожалуйста, нужно зачет сдать!!!) C++
нужна программа написанная на С++ в четверг нужно сдать C++
C++ Напишите пожалуйста решение задачи на Си++,завтра зачет.нужно сдать.Спасибо
C++ Как переделать код?. Нужно сделать через функции пользователя
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
20.06.2014, 13:24     Нужно сделать задание по c++! Через 3 часа нужно сдать! #2
egor11223, так и введи в поиск метод гаусса.
Kuzia domovenok
20.06.2014, 13:28
  #3

Не по теме:

А к чему такая спешка? Ты в летней школе учишься? Или в ВУЗе? Занятия вроде закончилась, лето началось...

egor11223
0 / 0 / 0
Регистрация: 18.06.2013
Сообщений: 9
20.06.2014, 13:30  [ТС]     Нужно сделать задание по c++! Через 3 часа нужно сдать! #4
практика в ВУЗе

Добавлено через 57 секунд
[cut]
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
20.06.2014, 13:45     Нужно сделать задание по c++! Через 3 часа нужно сдать! #5
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
245
246
247
248
249
250
251
252
253
254
255
256
257
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ChM_Lab2_C_sharp
{
 
 
 
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]);
}
}
}
}
Yandex
Объявления
20.06.2014, 13:45     Нужно сделать задание по c++! Через 3 часа нужно сдать!
Ответ Создать тему
Опции темы

Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru