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

Как можно найти алгебраическое дополнение в матрице (матричный метод, СЛАУ) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Кубический сплайн http://www.cyberforum.ru/cpp-beginners/thread1146662.html
Есть простейшая прога для построения кубического сплайна #include <iostream> #include <math.h> using namespace std; int main() {int n=5,i,j;double h; double *X=new double ; double *Y=new double ; cout<<"X:\n"; for(i=0;i<n;i++)
C++ Динамические массивы с указателями Ввести с клавиатуры три целых неотрицательных числа. Первые два задают размеры двумерного массива. Третье указывает на величину циклического смещения строчек матрицы. С генерированную и циклически смещенную матрицы вывести на экран. http://www.cyberforum.ru/cpp-beginners/thread1146661.html
Конкатенация строк C++
Написать программу, которая делает сложение унарных чисел. Я написал программу, она даже правильно считает, но как мне потом сказали, нужно сделать как-то через строки.. Думаю нужно сделать как-то в первом и втором цикле, чтобы записало в строки, а потом в третьем цикле, там где нужно найти сумму, выполнить объединение(конкатенацию) строк. int main() { int m, n, s, s1, s2, i; cout...
Даны 2 предложения. Найти общее количество букв н в них C++
Ошибка в операторе if #include <stdio.h> #include <iostream.h> #include <windows.h> int pod(string s, string a) { int k=0; for (int i=0; s!=0; i++) if (a==s) k++;
C++ Итерационный метод http://www.cyberforum.ru/cpp-beginners/thread1146637.html
Помогите найти ошибку в алгоритме. Ошибка в итоге выливается том что при подсчёте невязки, она не уменьшается, а увеличивается. Матрицу 4x4 и столбец свободных членов ввожу с клавиатуры. void IterativeMethod::bringingToTheEquivalentForm() //выражение x..x через уравнения { for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { G = -1*Matrix / Matrix; } G = 0;
C++ Const #define { const int HOLFSDsize= 2;//#define HOLFSDsize 2 // m-угольник void HOLFSD() { int i, n, l; // объявляем переменные float x1, y1, x, y; float a, b; подробнее

Показать сообщение отдельно
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
13.04.2014, 17:42     Как можно найти алгебраическое дополнение в матрице (матричный метод, СЛАУ)
добавть 2 цикла на изменение индексов дополнения которое ищем

Добавлено через 6 минут
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
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
 
int determ(int** Arr, int size);  
int opred_mas(int **Arr, int size);       //функция задания элементов массива
 
int main()
{
setlocale(LC_ALL, "Russian");
int n,k,k1;
cout<<"введите порядок матрицы\n";
cin>>n;
 
int** a = new int *[n];
    for (int i = 0; i < n; i++)
        a[i] = new int [n];
opred_mas(a, n);
for (int index1=0;index1<n;index1++)
    for (int index2=0;index2<n;index2++)
    {
        k=index1; k1=index2;
        int** temp = new int *[n-1];
            for (int i = 0; i < n-1; i++)
                temp[i] = new int [n-1];
        int s=0,s1=0;
        for(int i=0;i<n;++i)//строим матрицу минора участвующего в вычислении алгебраисческого дополнения
            if(i!=k) 
            {
                s1=0;
                for(int j=0;j<n;++j)
                    if(j!=k1) 
                        {
                            temp[s][s1]=a[i][j];
                            s1++;
                        }
 
                s++;
            }
            cout<<"\nМатрица минора элемента A"<<k+1<<k1+1<<endl;
             for(int i=0;i<n-1;++i)
            {
                for(int j=0;j<n-1;++j)
                {
        
                cout<<temp[i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        int res=0;
        res=pow(-1.,k+1+k1+1)*determ(temp,n-1);
        cout<<"Алгебраическое дополнение элемента А"<<k+1<<k1+1<<" равно\n"<<res<<endl;
    cout<<endl;
    }
 system("pause");
}
 
int opred_mas(int **Arr, int size)       //функция задания элементов массива
{
    //srand(time(NULL));
    for(int i=0;i<size;++i)
    {
        for(int j=0;j<size;++j)
        {
        Arr[i][j]=rand()%10-5;
        cout<<Arr[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    return 0; 
}
 
int determ(int** Arr, int size)         //функция поиска определителя
{
    int i,j;
    double det=0;       //переменная определителя
    int **matr;         //указатель
        if(size==1)     // 1-е условие , размер 1
        {
        det=Arr[0][0];
        }
            else if(size==2)    // 2-е условие , размер 2
            {
            det=Arr[0][0]*Arr[1][1]-Arr[0][1]*Arr[1][0];    //
            }
    else
    {
    matr=new int*[size-1]; //создание динамического массива
    for(i=0;i<size;++i)
        {
        for(j=0;j<size-1;++j)     
        {
        if(j<i)
          {
            matr[j]=Arr[j];
                   }
        else
            matr[j]=Arr[j+1];
               }
    det+=pow(-1., (i+j))*determ(matr, size-1)*Arr[i][size-1];    //подсчеты
          }
    delete[] matr;  //удаляем массив
    }
    return det; //возвращаем значение определителя
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru