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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать http://www.cyberforum.ru/cpp-beginners/thread774396.html
Здравствуйте. Помогите, пожалуйста, в написании алгоритма на C++. >>Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать.<< Спасибо заранее добрым людям!
C++ Как закрыть документ Word не закрывая приложение? Удалить из заданной строки все вхождения "*". Надеюсь, что с вашей помощью я таки пойму строковые данные на паскаль! http://www.cyberforum.ru/cpp-beginners/thread774395.html
Вложенные циклы и необъявленные идентификаторы C++
есть часть кода: for(int a=0; a<3;a++) if (a=0) int b=1; else if (a=1) int b=2; else if (a=2) int b=3; for(int c=0; c<3;c++) if (c=0) int d=1; else if (c=1) int d=2; else if (c=2) int d=3;
Хеширование-метод середины квадрата C++
Вот такая ситуация... Тип данных строки, метод разрешения колизии "открытая адресация". Проблема в самой хеш-функции, прочитал много теории, но никак не выходит теорию в жизнь воплатить =) Вот что есть: int _key(char* ch0) { int key; key=strlen(ch0); return key; }
C++ Почему делают такие комментарии к программе C++? http://www.cyberforum.ru/cpp-beginners/thread774272.html
В исходнике к одной игре все комментарии начинаются вот такими сомволами ///< struct _viewport_ { int X; ///< Screen pixel left corner x coordinate int Y; ///< Screen pixel upper corner y coordinate int EndX; ///< Screen pixel right x coordinate int EndY; ///< Screen pixel bottom y coordinate int MapX; ...
C++ Скомпилировать 5 проектов *.CPP в *.EXE Ребят, нужна помощь! Нужно срочно скомпилировать 5 С++ проектов в EXE - у меня Eclipse загнулся, не могу ничего поделать - нужна помощь подробнее

Показать сообщение отдельно
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1865 / 1661 / 579
Регистрация: 14.05.2014
Сообщений: 4,771
Записей в блоге: 1
Завершенные тесты: 5
31.05.2014, 17:37     Оптимизация алгоритма вычисления определителя матрицы
Укажите глупцу на ошибки, если не сложно
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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
double**  Minor(double** matrix, int size, int i, int j)
{
    double** minor = new double*[size-1];
    for (int k = 0; k < size-1; k++)
        minor[k] = new double[size-1];
    for (int x = 0; x < size; x++)
        for (int y = 0; y < size; y++)
            {
                if (x < i && y < j)
                    minor[x][y] = matrix[x][y];
                else if (x > i && y > j)
                    minor[x-1][y-1] = matrix[x][y];
                else if (x > i)
                    minor[x-1][y] = matrix[x][y];
                else if (y > j)
                    minor[x][y-1] = matrix[x][y];
            }
    return minor;
}
 
double Determinant(double** matrix, int size)
{
    if (size == 1)
        return matrix[0][0];
    else if  (size == 2)
        return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0];
    double determinant = 0;
    for (int j = 0; j < size; j++)
    {
        if(!matrix[0][j]) continue;
        double** minor = Minor(matrix,size-1, 0, j);
        determinant += pow(-1.f,(j+1))*matrix[0][j]*Determinant(minor, size);
        for (int k = 0; k < size-1; k++)
        {
            delete[] minor[k];
            minor[k] = 0;
        }
        delete[] minor;
    }
    
    return determinant;
}
 
int main()
{
    setlocale(LC_ALL, "");
    srand(unsigned(time(NULL)));
    int size;
    std::cout << "Введите размер массива: ";
    std::cin >> size;
    double** arr = new double*[size];
    for (int i = 0; i < size; i++)
        arr[i] = new double[size];
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            arr[i][j] = rand() % 10;
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
    std::cout << "Определитель матрицы: " << Determinant(arr, size) << std::endl;
    for (int i = 0; i < size; i++)
    {
        delete[] arr[i];
        arr[i] = 0;
    }
    delete[] arr;
    
    return 0;
}
 
Текущее время: 22:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru