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

Метод Гаусса для решения СЛАУ с использованием одномерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сумма квадратов цифр любого числа в итоге равняется числу из интервала [1,9]. http://www.cyberforum.ru/cpp-beginners/thread100117.html
Помогите решить с объяснениями. Сумма квадратов цифр любого числа в итоге равняется числу из интервала . Вывести количество и сами числа, сумма цифр которых равны либо 1, либо 4, из интервала от 1 до 500. Программа должна содержать рекурсивную функцию подсчета суммы цифр числа.
C++ В вещественной матрице размером NxN найти максимальный и минимальный элементы. Помогите решить с объяснениями. В вещественной матрице размером NxN найти максимальный и минимальный элементы. Переставить строки, в которых они находятся. Если они находятся в одной строке, выдать об этом сообщение. Программа должна содержать функции нахождения строк в которых находятся максимальный и минимальный элементы. http://www.cyberforum.ru/cpp-beginners/thread100116.html
вычисление простых чисел C++
в книге написана программа, про вычисление простых чисел. #include <iostream> #include <math.h> using namespace std; int main() { int n; bool prostoe = true; double koren = sqrt(double(n));
Геометрия(треугольник) C++
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то будет ли он прямоугольным.
C++ Последовательность http://www.cyberforum.ru/cpp-beginners/thread100052.html
Дана последовательность целых чисел . Выяснить, какое число встречается раньше — положительное или отрицательное.
C++ Найти среди компонентов файла количество чисел, которые делятся на 2, но не делятся на 4 Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Найти среди компонентов файла количество чисел, которые делятся на 2, но не делятся на 4. подробнее

Показать сообщение отдельно
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
01.03.2010, 12:26  [ТС]     Метод Гаусса для решения СЛАУ с использованием одномерного массива
Спасибо,но не могли бы еще раз помочь,а то я определил, что тот код который выше дико глючный и больше N=3 не хотит работать =(((
я написал новый,вроде поудачнее
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
#include <iostream>
#include <time.h>
using namespace std;
int n;
double c,d,det;
 main ()
{
      srand((unsigned)time(NULL));
cout << "n=";
cin >> n;
double **gauss1 = new double*[n];
for(int i=0; i<n; i++)
gauss1[i] = new double[n];
double *y = new double[n];
double *gauss2 = new double[n];
 
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
       gauss1[i][j] = rand()/100; 
//cout << "gauss1["<< i << "][" << j << "]=";
//cin >> gauss1[i][j];
}
}
 
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
      // gauss1[i][j] = rand()/100; 
cout << "gauss1["<< i << "][" << j << "]=";
cout <<  gauss1[i][j];
cout << "\n";
}
}
for(int j=0; j<n; j++)
{
cout << "gauss2[" << j << "]=";
cin >> gauss2[j];
}
for(int i=0; i<n; i++)
 
 
 
//Triangulycia
 
for(int k=0; k<n-1; k++)
{
for(int i=k+1; i<n; i++)
{
d=gauss1[i][k]/gauss1[k][k];
gauss1[i][k]=0;
 
for(int j=k+1; j<n; j++)
gauss1[i][j]=gauss1[i][j]-d*gauss1[k][j];
gauss2[i]=gauss2[i]-d*gauss2[k];
}
 
/*
//Formiruet v vide matrix
cout << "\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cout << "\n\t" << gauss1[i][j];
//printf("\n%f\t",gauss2[i]);
//printf("\n");
}*/
y[n-1]=gauss2[n-1]/gauss1[n-1][n-1];
for(int i=n-1; i>=1; i--)
 
c=0;
for(int j=i+1; j<n; j++)
c=c+gauss1[i][j]*y[j];
y[i]=(gauss2[i]-c)/gauss1[i][i];
 
}
 
//Glavnye peremennye
cout << "\n"; 
cout.precision(18);
for(int i=0; i<n; i++)
cout << "y[" << i << "]=" << y[i] << "\n";
 
 
//Determinant
det =1;
for(int i=0;i<n; i++)
det = det*gauss1[i][i];
cout << "\n Determinant= " << det;
 
cin.get();
cin.get();
}
и попытался переписать по аналогии для одномерного,но чета не получилось

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
#include <iostream>
using namespace std;
 
 
int n;
double c,d,det;
 
 
main ()
{
          srand((unsigned)time(NULL));
cout << "n=";
cin >> n;
int n1 = n*n;
double *gauss1 = new double[n1];
 
double *y = new double[n];
double *gauss2 = new double[n];
 
for(int i=0; i<n1; i++)
{
gauss1[i]=rand()/100;
}
for(int i=0; i<n1; i++)
{
cout << "gauss1["<< i << "]=";
cout << gauss1[i];
cout << "\n";
}
 
for(int j=0; j<n; j++)
{
cout << "gauss2[" << j << "]=";
cin >> gauss2[j];
}
for(int i=0; i<n; i++)
 
 
 
//Triangulycia
 
for(int k=0; k<n-1; k++)
{
for(int i=k+1; i<n; i++)
{
d=gauss1[i*n+k*n]/gauss1[k*n];
gauss1[i*n]=0;
 
for(int j=k+1; j<n; j++)
gauss1[i*n+j*n]=gauss1[i*n+j*n]-d*gauss1[k*n+j*n];
gauss2[i]=gauss2[i]-d*gauss2[k];
}
 
/*
//Formiruet v vide matrix
cout << "\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cout << "\n\t" << gauss1[i][j];
//printf("\n%f\t",gauss2[i]);
//printf("\n");
}*/
y[n-1]=gauss2[n-1]/gauss1[(n-1)*n];
for(int i=n-1; i>=1; i--)
 
c=0;
for(int j=i+1; j<n; j++)
c=c+gauss1[i*n+j*n]*y[j];
y[i]=(gauss2[i]-c)/gauss1[i*n];
 
}
 
//Glavnye peremennye
cout << "\n"; 
cout.precision(18);
for(int i=0; i<n; i++)
cout << "y[" << i << "]=" << y[i] << "\n";
 
 
//Determinant
det =1;
for(int i=0;i<n; i++)
det = det*gauss1[i*n];
cout << "\n Determinant= " << det;
 
cin.get();
cin.get();
}

Не по теме:

Сёдня точно не мой день,туплю что-то слишком =((((

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