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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Wanee
54 / 54 / 13
Регистрация: 02.02.2011
Сообщений: 434
#1

Определитель матрицы, разложением по произвольной строке - C++

13.05.2013, 17:26. Просмотров 1451. Ответов 7
Метки нет (Все метки)

Здравствуйте. Помогите передать этот код. Здесь считается определитель матрицы, путем разложения, но первой строке, а мне нужно по произвольной.
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
bool notInEx(int *lot, int v, int l){
    for(int i = 0; i < l; i++)
        if(v == lot[i]) return false;
    return true;
}
 
int det(int **&meas, int &size, int *lot, int l){
    int r = 0;
    int s = 1;
    for(int j = 0; j < size; j++){
        if (notInEx(lot, j, l)){
            if(l == size - 1) return meas[l][j];
            else{
                lot[l] = j;
                r = r + s * meas[l][j] * det(meas, size, lot, l + 1);
                s = -s;
            }
        }
    }
    return r;
}
 
void main(){
    setlocale(LC_ALL, "rus");
 
 
    int **meas = 0, *lot = 0;
    int size;
 
    system("cls");
 
    printf("Введите размер матрицы: ");
    scanf("%d", &size);
 
    lot = new int[size];
    meas = new int*[size];
    for(int j = 0; j < size; j++) meas[j] = new int[size];
 
    printf("Введите матрицу:\n");
    for(int j = 0; j < size; j++)
        for(int i = 0; i < size; i++) scanf("%d", &meas[j][i]);
 
    system("cls");
 
    printf("Матрица:\n");
    for(int j = 0; j < size; j++){
        for(int i = 0; i < size; i++) printf("%d ", meas[j][i]);
        printf("\n");
    }
 
    printf("A det: %d\n", det(meas, size, lot, 0));
 
    for(int j = 0; j < size; j++) delete []meas[j];
    delete []meas;
    delete []lot;
 
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 17:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определитель матрицы, разложением по произвольной строке (C++):

Функция класса(вычисление определителя произвольной матрицы) работает не правильно(постоянно определитель 0) - C++
void deterMatr(matr matrx) { if (matrx.rows == matrx.columns){ //приведение матрицы к треугольному виду int maxl, k; ...

Детерминант матрицы разложением по строке через OpenMP - C++
Детерминант находим рекурсией, через разложение по первой строке, все нормально работает, нужно только сделать многопоточной, подскажите...

Найти определитель матрицы, с помощью разложения её по строке - C++
Помогите написать программу , в которой нужно найти определитель матрицы , с помощью разложения её по строке. В исходнике все...

Определитель матрицы, ранг матрицы, обратная матрица - C++
Вы можете помочь, сделать определитель матрицы, или у кого есть коде: ранг матрицы, обратная матрица, или другие действия с матрицами.

Вычислить определитель по первой строке - C++
Помогите пожалуйста, в момент компиляции программа выдает 4 ошибки, ковырялась час, так и не нашла, заранее спасибо! #include...

Определитель матрицы - C++
Всем добрый вечер=) Написал программу для вычисления определителя матрицы. Она запускается но функция не считает его, поправьте если что...

7
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:36 #2
Цитата Сообщение от Wanee Посмотреть сообщение
printf("A det: %d\n", det(meas, size, lot, 0));
заменить на
C++
1
printf("A det: %d\n", det(meas, size, lot, rand()%size));
0
Wanee
54 / 54 / 13
Регистрация: 02.02.2011
Сообщений: 434
13.05.2013, 17:41  [ТС] #3
Ternsip, нет, это не верно.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:47 #4
Wanee, А, ну да, ошибся. Не проследил сразу логику в коде. А вы уверены, что вам нужен такой трудоёмкий метод ?
0
Wanee
54 / 54 / 13
Регистрация: 02.02.2011
Сообщений: 434
13.05.2013, 17:52  [ТС] #5
Ternsip, да, у меня задание такое.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 17:57 #6
Wanee, ну собственно, мне проще свой код написать, чем в ваш вчитываться, так что скажу пару слов : Отличается разложение по произвольной строке тем, что вы первый раз, когда будете раскладывать создадите новую матрицу, которая будет отличаться от старой тем, что у неё вычеркнута строка, по которой вы раскладываете, а дальше всё абсолютно аналогично.
0
Wanee
54 / 54 / 13
Регистрация: 02.02.2011
Сообщений: 434
13.05.2013, 18:05  [ТС] #7
Ternsip, а вы сможете это сделать, без большого выделения памяти? Ну что бы каждый раз не создавать новую матрицу.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:28 #8
Wanee, а я просто не стану над этим задумываться, потому как Гауссом за О(N^3) найду определитель, без дополнительных затрат памяти.
0
13.05.2013, 18:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 18:28
Привет! Вот еще темы с ответами:

Определитель Матрицы - C++
доброе время суток Напишите у кого есть код нахождения определителя матрицы мне надо 4х4 ну а nxn, соответственно тоже подойдёт !!!! ...

Определитель матрицы - C++
Не могу написать код реккурсивной ф-ии на С для подсчёта опредилителя матрцы nxn, помогите кто чем может: или кодом или алгоритмам зарание...

Определитель матрицы 7х7 - C++
Ребят, всем привет! Помогите пожалуйста найти определитель матрицы 7х7...

Найти определитель матрицы - C++
дана матрица второго порядка (a_b; c_d)найти определитель матрицы!


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru