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

Определитель матрицы, верен ли алгоритм? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Компилятор ругается на функцию strncat http://www.cyberforum.ru/cpp-beginners/thread1305325.html
#include <iostream> #include <string> using namespace std; long p,x,i,j,k,d,l; char t,s; void prefix() {
C++ Как исправить ошибку? #include <conio.h> #include <math.h> #include <iostream> using namespace std; int fact(int a) {if (a==0) return 1; else return a*fact(a-1); } int main() { int n,p,i; http://www.cyberforum.ru/cpp-beginners/thread1305323.html
Оформить процедурой определение наибольшего числа из 3 чисел C++
оформить процедурой определение наибольшего числа из 3 чисел
C++ Динамический массив с использованием указателей
Дан двумерный массив целых чисел размером , где m и n – заданные натуральные числа. Если в массиве есть такие две строки, что все элементы одного из них являются делителями всех элементов другого, поменять их местами (при наличии нескольких вариантов, рассматривать первые из найденных строк). Если подобных строк нет, выдать соответствующее сообщение. Воспользоваться динамическими массивами и...
C++ Написать программу, определяющий рост учеников, которых больше среднего роста по классу http://www.cyberforum.ru/cpp-beginners/thread1305267.html
Пожалуйста помогите написать программу, определяющий рост учеников, которых больше среднего роста по классу!
C++ Задача с использованием последовательности Дана строка s. Если последовательность {s}_{1},...,{s}_{n} является палиндромом, тоесть {s}_{1}={s}_{n},{s}_{2}={s}_{n-1},...., то оставить ее без изменения, иначе получить последовательность {s}_{1},{s}_{2},....,{s}_{n-1},{s}_{n},{s}_{n-1},...,{s}_{2},{s}_{1} (здесь n – количество символов в исходной строке). %-) подробнее

Показать сообщение отдельно
cactus
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 8
19.11.2014, 19:35     Определитель матрицы, верен ли алгоритм?
Ввел несколько матриц, вроде посчитал правильно, но линал очень плохо помню, так что в правильности решения не уверен. Можете ли сказать верно ли написал, если нет, то что поправить?

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
float detFM()
    {
        if (this->is_square())//проверяем квадратная или нет
        {
            int n = str;
            float **buf = new float *[n];//создаем матрицу размера той, чей определитель надо посчитать
            for (int i = 0; i < n; i++)
            {
                *(buf + i) = new float[n];
            }
 
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    buf[i][j] = a[i][j];//копируем элементы исходной матрицы
                }
            }
 
            for (int i = 0; i < n; i++)//начинаем приводить ее к треугольному виду
            {
                if (buf[i][i] == 0) return 0;//если в процессе на главной диагонали появляются нули, то возвращаем 0
 
                for (int j = i + 1; j < n; j++)
                {
                    float koef = buf[j][i] / buf[i][i];
                    float *hlp = new float[n];
                    for (int k = 0; k < n; k++)
                    {
                        hlp[k] = buf[i][k] * koef;
                    }
                    for (int h = 0; h < n; h++)
                    {
                        buf[j][h] = buf[j][h] - hlp[h];
                    }
                    delete []hlp;
                }
            }
            /*
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    cout << "\t" << buf[i][j];
                }
                cout << endl << endl;
            }
            */
            float det = 1;
            for (int i = 0; i < n; i++)
            {
                det *= buf[i][i];
            }
 
            for (int i = 0; i < n; i++)
            {
                delete[]buf[i];
            }
            delete[]buf;
            return det;
        }
        else
        {
            cout << "matrix isn't sqare!" << endl;
            return NULL;
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru