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

Нужно чтобы в матрице столбец менялся на столбец свободных членов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
27.02.2010, 22:35     Нужно чтобы в матрице столбец менялся на столбец свободных членов #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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<iostream.h>
#include<math.h>
#include<conio.h>
int main()
{
clrscr();
float a11,a12,a13,a21,a22,a23,a31,a32,a33,b1,b2,b3,D1,D2,D3,D,x1,x2,x3;
cout<<" Vvedite koefichienti:\n";
cout<<" a11=";
cin>>a11;
cout<<" a12=";
cin>>a12;
cout<<" a13=";
cin>>a13;
cout<<" a21=";
cin>>a21;
cout<<" a22=";
cin>>a22;
cout<<" a23=";
cin>>a23;
cout<<" a31=";
cin>>a31;
cout<<" a32=";
cin>>a32;
cout<<" a33=";
cin>>a33;
cout<<" Vvedite svobodnie chleny:\n";
cout<<" b1=";
cin>>b1;
cout<<" b2=";
cin>>b2;
cout<<" b3=";
cin>>b3;
D=a11*(a22*a33-a23*a32)-a12*(a21*a33-a23*a31)+a13*(a21*a32-a22*a31);
if (D==0)
cout<<"beskonechnoe mnozhestvo resheniy";
else{
D1=b1*(a22*a33-a23*a32)-a12*(b2*a33-a23*b3)+a13*(b2*a32-a22*b3);
D2=a11*(b2*a33-a23*b3)-b1*(a21*a33-a23*a31)+a13*(a21*b3-b2*a31);
D3=a11*(a22*b3-a32*b2)-a12*(a21*b3-b2*a31)+b1*(a21*a32-a22*a31);
x1=D1/D;
x2=D2/D;
x3=D3/D;
cout<<"\n Opredeliteli:\n";
cout<<" D="<<D<<"; ";
cout<<" D1="<<D1<<"; " ;
cout<<" D2="<<D2<<"; ";
cout<<" D3="<<D3<<";\n ";
cout<<"\n Korni sistemy uravneniy:\n";
cout<<" x1="<<x1<<"; ";
cout<<" x2="<<x2<<"; ";
cout<<" x3="<<x3<<"; ";
getch();
return 0;
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2010, 22:35     Нужно чтобы в матрице столбец менялся на столбец свободных членов
Посмотрите здесь:

C++ Поменять местами строку и столбец в матрице
C++ Среди столбцов матрицы А найти столбец, содержащий минимальное произведение своих элементов и принять этот столбец за вектор X
Найти в матрице больший по сумме столбец C++
C++ В матрице имеется столбец в котором разность между максимальным элементом и среднем арифметическим больше первого элемента найти этот столбец и замети
Поменять в матрице 1-й столбец со 2-ым, 3-й с 4-м и т.д. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
27.02.2010, 22:43     Нужно чтобы в матрице столбец менялся на столбец свободных членов #2
Цитата Сообщение от ромыч Посмотреть сообщение
float a11,a12,a13,a21,a22,a23,a31,a32,a33,b1,b2,b3,D1,D2 ,D3,D,x1,x2,x3;
О_о жесть......
Создаешь массив a[3][3]. Делаешь цикл в цикле и заполняешь массив. Для свободных членов создаешь массив b[3], заполняешь циклом. И так далее....
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
27.02.2010, 22:48  [ТС]     Нужно чтобы в матрице столбец менялся на столбец свободных членов #3
Цитата Сообщение от WiDe Посмотреть сообщение
О_о жесть......
Создаешь массив a[3][3]. Делаешь цикл в цикле и заполняешь массив. Для свободных членов создаешь массив b[3], заполняешь циклом. И так далее....
а как это будет выглядить в коде?мне же надо менять всего 3 столбца по очереди,для этого нужна одна общая формула,чтоб массив сам менял...?как то через a[i][j]...?считать то придется все Д,а надо чтоб был один общий...
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
27.02.2010, 23:02     Нужно чтобы в матрице столбец менялся на столбец свободных членов #4
Ну допустим вместо первого столбика матрицы а надо поставить свободные члены, то это будет:
C++
1
2
3
4
5
j=0;
k=0;
for(i=0;i<2;i++){
a[i][j]=d[k];
k++;}
По моему так, если я не ошибаюсь... потомо чтобы вместо второго заменить, то надо j++, и вместо третьего ещё раз j++. В конечном итоге j будет равно 2, т.е. номеру последнего столбика. Ну и k не забывать обнулять...
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
27.02.2010, 23:09  [ТС]     Нужно чтобы в матрице столбец менялся на столбец свободных членов #5
Цитата Сообщение от WiDe Посмотреть сообщение
Ну допустим вместо первого столбика матрицы а надо поставить свободные члены, то это будет:
C++
1
2
3
4
5
j=0;
k=0;
for(i=0;i<2;i++){
a[i][j]=d[k];
k++;}
По моему так, если я не ошибаюсь... потомо чтобы вместо второго заменить, то надо j++, и вместо третьего ещё раз j++. В конечном итоге j будет равно 2, т.е. номеру последнего столбика. Ну и k не забывать обнулять...
Это да,но как сделать чтоб вот это
D1=b1*(a22*a33-a23*a32)-a12*(b2*a33-a23*b3)+a13*(b2*a32-a22*b3);
D2=a11*(b2*a33-a23*b3)-b1*(a21*a33-a23*a31)+a13*(a21*b3-b2*a31);
D3=a11*(a22*b3-a32*b2)-a12*(a21*b3-b2*a31)+b1*(a21*a32-a22*a31);
считало одной формулой?то есть надо сделать одну общую формулу для D,которая считала бы в зависимости от номера замененного столбца.то есть если первый столбец заменили,то должна считать первый определитель и т.д.
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
27.02.2010, 23:13     Нужно чтобы в матрице столбец менялся на столбец свободных членов #6
Тогда можно сделать так. Объявить ещё один массив, который заполняется следующим образом: в первый столбец элементы массива b, а второй и третий соответственные элементы массива a. Написать функцию, которая вычисляет D и передавать в неё наш массив.
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
27.02.2010, 23:16  [ТС]     Нужно чтобы в матрице столбец менялся на столбец свободных членов #7
Цитата Сообщение от WiDe Посмотреть сообщение
Тогда можно сделать так. Объявить ещё один массив, который заполняется следующим образом: в первый столбец элементы массива b, а второй и третий соответственные элементы массива a. Написать функцию, которая вычисляет D и передавать в неё наш массив.
а в виде кода?
WiDe
10 / 10 / 1
Регистрация: 23.02.2010
Сообщений: 120
27.02.2010, 23:25     Нужно чтобы в матрице столбец менялся на столбец свободных членов #8
Код
D=a11*(a22*a33-a23*a32)-a12*(a21*a33-a23*a31)+a13*(a21*a32-a22*a31);
А определитель вообще разве так находится? Если я не ошибаюсь, то вроде так:
Код
D=a11*a22*a33+a12*a23*a31+a21*a32*a13-a13*a22*a31-a12*a21*a33-a23*a32*a11;
Не могу понять как вы находите определитель....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2010, 23:39     Нужно чтобы в матрице столбец менялся на столбец свободных членов
Еще ссылки по теме:

Как в матрице удалить одну строку и столбец? C++
C++ Нужно чтобы менялся столбец со строкой в матрице
Не меняет строчку и столбец в матрице C++

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

Или воспользуйтесь поиском по форуму:
ромыч
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 46
27.02.2010, 23:39  [ТС]     Нужно чтобы в матрице столбец менялся на столбец свободных членов #9
Цитата Сообщение от WiDe Посмотреть сообщение
Код
D=a11*(a22*a33-a23*a32)-a12*(a21*a33-a23*a31)+a13*(a21*a32-a22*a31);
А определитель вообще разве так находится? Если я не ошибаюсь, то вроде так:
Код
D=a11*a22*a33+a12*a23*a31+a21*a32*a13-a13*a22*a31-a12*a21*a33-a23*a32*a11;
Не могу понять как вы находите определитель....
Говорю же методом Крамера,а у вас простая прогонка. Ну а когда D,D1,D2,D3 считать надо чтоб одна была формула общая,как тогда...
Yandex
Объявления
27.02.2010, 23:39     Нужно чтобы в матрице столбец менялся на столбец свободных членов
Ответ Создать тему
Опции темы

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