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

Код вычисления определителя матрицы до 10-го порядка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ База болезней.В чём ошибка http://www.cyberforum.ru/cpp-beginners/thread1075154.html
База болезней: название, симптомы, процедуры, перечень рекомендуемых лекарств с указанием требуемого количества. База медикаментов на складе: название, количество, взаимозаменяемость. Программа выполняет формирование рецепт после осмотра больного, проверку наличия лекарства, корректировку запасов. #include "stdafx.h" #include <stdio.h> #include <iostream> #include <string.h> using...
C++ Найти наибольший прямоугольник в матрице состоящий из четных чисел Дана матрица натуральных чисел. Найти наибольший прямоугольник в матрице состоящий из четных чисел. исходная матрица хранится в файле input.txt файл имеет такую структуру: m n a_11 .. a_1n ... a_m1 .. a_mn Прямоугольную матрицу нужно записать в файл output.txt http://www.cyberforum.ru/cpp-beginners/thread1075151.html
C++ Дана матрица. получить массив b, присвоив его k-му элементу значение 1, если строка упорядочена..
Дана матрица. получить массив b, присвоив его k-му элементу значение 1, если строка упорядочена по убыванию и 0 - в противном случае. Вот код, проблема в том, что при вводе правильной строки(по убыванию элементы) выражение "k++" всё равно не выполняется. for (i=0;i<n;i++) { k=1; for(j=1;j<m;j++) { if (umas2>umas2) { k++;
inline и define C++
Почему использовать inline-функции лучше, чем использовать команду препроцессора #define? Смысл в том, что лучше лишний раз не трогать препроцессор?
C++ Односвязный список http://www.cyberforum.ru/cpp-beginners/thread1075146.html
Всем привет. Помогите разобраться с односвязным списком. Вот собственно и вопросы: 1) Если я правильно понял то список это чтото вроде бесконечного динамического массива? 2) Что бы получить данные из конкретного элемента списка, нужно пройти от начала списка до нужного места? 3) Список в основном используется в структурах и классах? 4) Я попробовал создать список, подскажите правильно он...
C++ Почему нет звука? Ошибок нет, но и звука в колонках нет ... mciSendString(("open sample.mp3 type mpegvideo alias "),NULL,1,NULL); mciSendString(("play sample.mp3"),0,1,NULL) Подключены инклюды и либа mmsystem.lib. Среда Codeblock. подробнее

Показать сообщение отдельно
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
20.01.2014, 02:30     Код вычисления определителя матрицы до 10-го порядка
Нашел у себя в загашнике метод Гаусса. Когда число правых частей m=0, то вычисляет определитель.
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
#include <iostream>
#include <cmath>
using namespace std;
 
int Gauss(double *aa, int n, int m, double *det, double eps)
#define a(i,j) aa[n*(j)+(i)]
{
    double e,p;
    int i,j,k,nm;
 
    *det=1.0;
    nm=n+m;
    for (i=0; i<n; i++) {
        e=0.0;
        for (j=i; j<n; j++)
        if ((p=fabs(a(j,i)))>e) {e=p; k=j;}
        if (e < eps) return i+1;
        if (k != i) {
            for (j=i; j<nm; j++) {
                p=a(i,j);
                a(i,j)=a(k,j);
                a(k,j)=p;
            }
            *det=-*det;
        }
        *det *= a(i,i);
        for (k=i+1; k<nm; k++) a(i,k) /= a(i,i);
        for (j = m!=0 ? 0 : i+1; j<n; j++) if (j != i) {
            p=a(j,i);
            for (k=i+1; k<nm; k++) a(j,k) -=a(i,k)*p;
        }
    }
    return 0;
}
 
double a[16]={
       1, -2,  3,  4,
       2,  1, -4,  3,
       3, -4, -1, -2,
       4,  3,  2, -1};
 
int main() {
    double det;
    int ret;
    ret=Gauss(a, 4, 0, &det, 0.000001);
    if(ret)
        det=0.0;
    cout << det << endl;
    return 0;
}
 
Текущее время: 04:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru