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

Написать программу для поиска определителя до 10 порядка включительно - C++

Восстановить пароль Регистрация
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
08.03.2014, 11:42     Написать программу для поиска определителя до 10 порядка включительно #1
Здравствуйте. Очень нужна помощь. Нужно написать программу для поиска определителя до 10 порядка включительно. На форуме есть множество программ, но я не до конца понимаю, как они работают. Очень благодарен буду за любую помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 11:42     Написать программу для поиска определителя до 10 порядка включительно
Посмотрите здесь:

Поиска в записанном ранее файле по фамилии или по группе с выбором параметра поиска C++
C++ Улучшение алгоритма вычисления определителя матрицы, порядка n>3
C++ Рекурсия. Написать программу поиска минимального пути для произвольной пары городов
Код вычисления определителя матрицы до 10-го порядка C++
Написать программу, которая выводит квадрат, введенного с клавиатуры, числа в диапазоне от 0 до 10 включительно. При введении отрицательного числа осу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gunslinger
случайный прохожий
 Аватар для gunslinger
1098 / 716 / 184
Регистрация: 20.07.2013
Сообщений: 1,973
08.03.2014, 13:12     Написать программу для поиска определителя до 10 порядка включительно #2
http://ru.wikipedia.org/wiki/%D0%9E%...B5%D0%BB%D1%8C
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
08.03.2014, 20:58  [ТС]     Написать программу для поиска определителя до 10 порядка включительно #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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
 
int determ(int** Arr, int size);
 
int main()
{
        int size;
        cout<<"Vveite size";
            cin>>size;
        int **Arr;
        Arr=new int*[size];
        for(int i=0;i<size;++i)
                Arr[i]=new int[size];
        for(int i=0;i<size;++i)
                for(int j=0;j<size;++j)
                        cin>>Arr[i][j];
        for(int i=0;i<size;++i)
        {
                for(int j=0;j<size;++j)
                       cout<<Arr[i][j]<<' ';
              cout<<endl;
        }
         cout<< determ(Arr, size) <<'\n';
        for(int i=0;i<size;++i)
                delete[] Arr[i];
        delete[] Arr;
        system("pause");
        return 0;
}
 
int determ(int** Arr, int size)
{
        int i,j;
        double det=0;
        int **matr;
        if(size==1)
        {
                det=Arr[0][0];
        }
        else if(size==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;
}
freemanc
 Аватар для freemanc
12 / 12 / 1
Регистрация: 27.11.2012
Сообщений: 140
08.03.2014, 21:13     Написать программу для поиска определителя до 10 порядка включительно #4
avatar1870,
Используйте метод Гаусса. Разбор по косточкам: http://math.semestr.ru/gauss/opred.php
Реализация:
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
#include <iostream.h>
#include <conio.h>
 
struct Matrix
{
        int Size;
        float ** Matr;
};
 
void SetMemory(Matrix &matrix)
{
        cout<<"Enter the size of matrix: ";
        cin>>matrix.Size;
        matrix.Matr = new float*[matrix.Size];
        for(int i=0; i<matrix.Size; i++)
                matrix.Matr[i] = new float[matrix.Size];
 
}
 
void SetMatrix(Matrix &matrix)
{
        for(int i=0; i<matrix.Size; i++)
                for(int j=0; j<matrix.Size; j++)
                {
                        cout<<"A["<<i+1<<"]["<<j+1<<"] = ";
                        cin>>matrix.Matr[i][j];
                }
 
}
 
void ShowMatrix(Matrix matrix)
{
        for(int i=0; i<matrix.Size; i++)
        {
                for(int j=0; j<matrix.Size; j++)
                        cout<<matrix.Matr[i][j]<<'\t';
                cout<<endl;
        }
}
 
float detA(Matrix &matrix)
{
        int n = matrix.Size;
        float k = 0;
        bool check = true;
        int ind1=0, ind2=0;
        float result = 1;
 
       for(int t=0; t<n-1; t++)
       {
           for(int i=t+1; i<n; i++)
           {
 
                    for(int j=t; j<n; j++)
                    {
                            if(check == true)
                            {
                                    check = false;
                                    k = (-matrix.Matr[i][j]) / matrix.Matr[ind1][ind2];
                            }
                            matrix.Matr[i][j] += matrix.Matr[ind1][ind2] * k;
                            ind2++;
                    }
                    check = true;
                    ind2 = t;
           }
           ind1++;
           ind2++;
       }
       for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
                if(i == j)
                    result *= matrix.Matr[i][j];
       return result;
}
 
void main()
{
        srand(time(NULL));
        float result;
        Matrix matrix;
        SetMemory(matrix);
        SetMatrix(matrix);
        result = detA(matrix);
        ShowMatrix(matrix);
        cout<<"\ndetA = "<<result<<endl;
        _getch();
}
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
08.03.2014, 23:09  [ТС]     Написать программу для поиска определителя до 10 порядка включительно #5
К сожалению Гаус не подходит
Yandex
Объявления
08.03.2014, 23:09     Написать программу для поиска определителя до 10 порядка включительно
Ответ Создать тему
Опции темы

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