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

Найти обратную матрицу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить функцию вычисления суммы элементов выше диагонали http://www.cyberforum.ru/cpp-beginners/thread649866.html
Задание: Составить функцию вычисления суммы S положительных элементов матрицы, лежащие выше некоторой диагонали, параллельной главной диагонали. Используя эту функцию, в матрице K(5,5) вычислить произведение суммы S элементов, лежащих выше диагонали А (см рисунок) на сумму S элементов лежащих выше диагонали B, а в матрице T(6,6)- сумму S элементов, лежащих выше диагонали C: матрица K:...
C++ Видимость переменной Подскажите пожалуйста, если у меня есть две функции, в которых мне надо использовать одну и ту же константу, правильнее будет сделать её глобальной, или описать сначала в одной, а потом в другой функции? http://www.cyberforum.ru/cpp-beginners/thread649861.html
C++ Народ спасайте, на счет теста
Парни спасайте. Нужно узнать откуда в этой программе берутся вопросы, картинки и все остальное для теста. Я понимаю что из файлов <Classes.hpp> <Controls.hpp> <StdCntrl.hpp> <Forms.hpp> <ExtCtrls.hpp> <Dialogs.hpp> <Graphics.hpp> а как эти файлы написать, и самое главное, чтов них писать?
Не работает strcmp + указатели непойми что опять выводят C++
Странно все это в одном примере работает strcmp в другом (здесь) не работает. Не могу понять почему, пока разбирался решил проверить на какой адрес указатель показывает, а он почему-то не меняет свое значение. Очень странно.... #include <iostream> #include <cstring> int main(){ const char* line1="Hello"; const char* line2="World"; std::cout<<&line1<<" "<<&line2<<std::endl;...
C++ Как программно незаметно создать zip/rar архив и отправить на хост? http://www.cyberforum.ru/cpp-beginners/thread649847.html
C++(лучше C++/CLI). Например: моя программа на компьютере с именем пользователя "User01". Она берет файли из нужных мне папок и пакует в архив с именем "User01-10-09-2012.rar/.zip" и шлется на какой-нибудь хост или мыло
C++ не работают все коды при компилировании любого кода в консоли появляется сообщение""адрес файла" не является внутренней или внешней программой или пакетным кодом. для продолжения нажмите любую кнопку... подробнее

Показать сообщение отдельно
IrineK
Заблокирован
12.09.2012, 21:16     Найти обратную матрицу
К сожалению, все несколько сложней:

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
//Обратная матрица [3][3]
 
#include <iostream>
#include <iomanip>
#include <ctime>
 
using namespace std;
 
//алгебраическое допополнение к элементу a[row][col]
double add(double a[3][3],int row, int col)
{   double b[2][2];
    int i,j,bi,bj;
 
    for(i=0, bi=0;i<3;i++)
    {   if(i!=row)
        {   for(j=0, bj=0;j<3;j++)
                if(j!=col)
                {   b[bi][bj]=a[i][j];
                    bj++;
                }
            bi++;
        }
    }
    
    if((row+col)%2)
        return b[0][1]*b[1][0] - b[0][0]*b[1][1];
    else
        return b[0][0]*b[1][1] - b[0][1]*b[1][0];
}
 
 
//определитель матрицы
double det(double a[3][3])
{   int i;
    double sum;
 
    for(i=0, sum=0.;i<3;i++)
        sum += a[i][0]*add(a,i,0);
    
    return sum;
}
 
 
//обратная матрица
void inverse(double a[3][3], double d)
{   double a1[3][3], cur;
    int i,j;
    
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            a1[i][j] = add(a,i,j) / d;
 
    for(i=0;i<3;i++)
        for(j=i+1;j<3;j++)
        {   cur = a1[i][j];
            a1[i][j] = a1[j][i];
            a1[j][i] = cur;
        }
 
    cout<<"\nInverse:\n";
    for(i=0;i<3;i++)
    {   for(j=0;j<3;j++)
            cout<<setw(7) << a1[i][j];
        cout<<"\n";
    } 
 
}
 
 
int main()
{   double arr[3][3], determinant;
    int i,j;
    
    srand(time(NULL));
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            arr[i][j] = 1.5 * (rand()%9 - 5);
 
    cout<<"Array:\n";
    for(i=0;i<3;i++)
    {   for(j=0;j<3;j++)
            cout<<setw(7)<<setiosflags(ios::fixed) << setprecision(2)<<arr[i][j];
        cout<<"\n";
    } 
 
    determinant = det(arr);
    cout<<"\nDeterminant: "<<determinant<<"\n";
 
    if(determinant) inverse(arr,determinant);
    else cout<<"Inverse impossible";
    
    getchar();
    return 0;
}
Миниатюры
Найти обратную матрицу  
 
Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru