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

Dev Cpp Решение системы алгебраических уравнений компактным методом исключения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив. нужно перемножить элементы столбика и вывести результат http://www.cyberforum.ru/cpp-beginners/thread1115924.html
я понял только как считать всю инф. с файла, а вот как перемножить теперь эл-ты 1 столбца? #include <iostream> #include <fstream> #include <iomanip> #include <stdlib.h> using namespace std; int main() { setlocale (LC_ALL, "RUS"); int n=0;
C++ более компактный код нужна замыниты вес то что я написал в функции void n() на более компактный код (суть кода выравнивать столбик ) //Calculator #include<iostream> #include<conio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1115918.html
Сериализация и десериализация двусвязного списка C++
Ребят, помогите плиз решить задачу, которые сутки сижу нифига не получается(( Может я просто, глупый((( Реализуйте функции сериализации и десериализации двусвязного списка, заданного следующим образом: struct ListNode { ListNode * prev; ListNode * next; ListNode * rand; // указатель на произвольный элемент данного списка std::string data; };
C++ OpenMP в Dev CPP
как подключить openMP в DevCPP?
C++ Intel (R) C++ http://www.cyberforum.ru/cpp-beginners/thread1115899.html
Кто-нибудь пользовался этим компилятором? Если да, то правда, что он оптимальнее собирает код для процессоров Intel в сравнении с MV C++?
C++ Stdext::hash_map и std::map Здравствуйте форумчане! Может ли кто нибудь объяснить мне отличие stdext::hash_map от std::map? В интернете не так много информации о нем, а на cplusplus.com её нету. Единственное что я понял - stdext::hash_map использует какую то функцию, которая влияет на хранение данных) В принципе ничего особенного не прошу) Мне хватит куска кода, который наглядно показывает работу stdext::hash_map.... подробнее

Показать сообщение отдельно
lena_nikolaeva
Сообщений: n/a
11.03.2014, 17:52     Dev Cpp Решение системы алгебраических уравнений компактным методом исключения
Здравствуйте! Есть задание, "решение системы алгебраических уравнений компактным методом исключения. Коэффициенты обрабатываются в двух матрицах, матрица действительной части и матрица мнимой части комплексного числа в алгебраической форме."
На входе - txt файл с коэффициентами системы в виде матрицы размером N строк на N+1 столбцов, в N+1 столбце - свободные члены системы, коэффициенты - комплексные вещественные числа в алгебраической форме, вроде такого
3
1 -1 1 1 1 -1 2 0
1 1 1 -1 1 1 4 2
1 1 1 1 1 -1 0 2
0.0001

На выходе - файл значений решения системы в комплексной алгебраической форме
Так вот, самое интересное) есть код решения аналогичной задачи, только коэффициенты обрабатываются в объединенной матрице комплексных коэффициентов, вот код

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
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
 
typedef double t_matrix[200][202];
 
void InputData(t_matrix,int&,int&,double&); // Ввод данных
void ProcessMatrix(t_matrix,int,int,double,bool&); // Преобразование матрицы
void BackTurn(t_matrix,int,int); // Обратный ход
void PrintComplex(double,double); // Вывод комплексного числа на консоль
void OutputResult(t_matrix,int,int,bool); // Вывод результатов
void OutputMatrix(t_matrix, int);
 
int main()
{
t_matrix a; // Матрица
int n, r; // Размер матрицы
double e; // Точность
InputData(a,n,r,e);
OutputMatrix(a, r);
bool solutionExists; // Решение существует
ProcessMatrix(a,n,r,e,solutionExists);
OutputMatrix(a, r);
if (solutionExists)
BackTurn(a,n,r);
OutputResult(a,n,r,solutionExists);
system("PAUSE");
return EXIT_SUCCESS;
}
 
/* Ввод данных (a - матрица коэффициентов, n,r - размеры, e - точность) */
void InputData(t_matrix a, int &n, int &r, double &e) 
{
 
ifstream f("SourceData.txt");
f » n;
r = 2*n;
cout « "Source data: \n";
cout « "n = " « n « '\n';
cout « "a =\n";
for (int i=1; i<=n; i++)
{ 
cout « " ";
for (int j=1; j<=n+1; j++)
{ 
double rea, ima;
f » rea;
f » ima;
PrintComplex(rea, ima);
int k = 2*i - 1;
int h = k + 1;
int m = 2*j - 1;
a[k][m] = rea;
a[h][m] = ima;
if (j != n + 1)
{
a[k][++m] = -ima;
a[h][m] = rea;
} 
}
cout « '\n';
}
f » e;
cout « "e = " « e « '\n';
f.close();
 
}
 
/* Обработка коэффициентов (a - матрица, n,r - размеры, e - точность, solutionExists - решение существует) */
void ProcessMatrix(t_matrix a, int n, int r, double e, bool &solutionExists)
{ 
double det = 1;
solutionExists = true;
for (int k=1; k<=r+1; k++) 
for (int i=1; i<=r; i++)
{
int h = i;
int s = 1;
int m;
if (i < k)
m = i - 1;
else
m = k - 1;
for (;;) 
{
double q = a[i][k];
if (m != 0)
for (int j=1;j<=m;j++)
q -= a[i][j]*a[j][k];
if (i == k)
{ 
if (fabs(q) <= e)
{ 
h++;
s = -s;
if (h > n)
{ // Нет решения
det = 0;
solutionExists = false;
return;
}
else
{ 
for (int j=1;j<=r;j++)
{
double p = a[i][j];
a[i][j] = a[h][j];
a[h][j] = p;
}
}
}
else
{ 
det *= s*q;
a[i][k] = (q);
break;
}
}
else 
{
if (i < k)
a[i][k] = (q / a[i][i]);
else
a[i][k] = (q);
break;
}
}
}
}
 
/* Обратный ход (a - матрица, n - размер) */
void BackTurn(t_matrix a, int n, int r)
{
for (int i = r-1; i>0; i--)
for (int j = r; j>=i+1; j--)
a[i][r+1] -= a[i][j]*a[j][r+1]; 
}
 
void PrintComplex(double ra, double ia)
{
cout « ra;
if (ia > 0)
cout « " + " « ia;
else
cout « " - " « -ia;
cout « "*j ";
}
 
/* Вывод результатов (a - матрица, n - размер, solutionExists - решение существует) */
void OutputResult(t_matrix a, int n, int r, bool solutionExists)
{
cout « "\nAnswer:\n";
ofstream f("Answer.txt");
if (solutionExists)
for (int i=1; i<=n; i++) 
{ 
cout « "x" « i « " = ";
PrintComplex(a[2*i-1][r+1], a[2*i][r+1]);
cout « '\n';
f « a[2*i-1][r+1] « "+j*" « a[2*i][r+1] « '\n'; 
}
else
{
cout « "Solution doesn't exists";
f « "No solution";
}
f.close();
cout « "\n\n"; 
}
 
void OutputMatrix(t_matrix a, int r)
{
for (int i=1;i<=r;i++)
{
for (int j=1; j<=r+1;j++)
cout « a[i][j] « ' ';
cout « '\n';
}
cout « '\n'; 
}
Нужно сделать так, чтобы соответствовало моей задачке. Помогите новенькой, пожалуйста!

Добавлено через 17 часов 16 минут
Все, больше неактуально.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru