С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
1

Вычислить определитель матрицы

15.05.2017, 20:22. Показов 4822. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане! Так получилось, что я снова решил пополнить свою коллекцию программ по работе с матрицами. На этот раз, я вычислял определитель (приводя матрицу к треугольному виду). Одновременно с этим, я решил сдать задачу на E-olymp (задача №14 для этой темы). При отправке выдает кучу ошибок, хотя определитель (методом Гаусса) считает правильно. Вот условие (ниже мой код):

Определитель

Дана целочисленная матрица размера n×n. Вычислить ее определитель.

Входные данные:

В первой строке записано натуральное число n (n ≤ 100). В каждой из следующих n строк задано по n целых чисел, не превосходящих по модулю 1000000. j-тое число в (i+1)-ой строке определяет j-тый элемент i-той строки матрицы.

Выходные данные:

Выведете значение определителя.
Лимит времени 2 секунды
Лимит использования памяти 64 MiB

Мой код:

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
#include <iostream>
 
using namespace std;
 
int main()
{
    int N;
    double tmp, d;
    cin >> N;
    int** A = new int*[N];
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[N];
    }
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cin >> A[i][j];
        }
    }
    for (int k = 0; k < N - 1; k++)
    {
        for (int i = k + 1; i < N; i++)
        {
            tmp = -A[i][k] / A[k][k];
            for (int j = 0; j < N; j++)
            {
                A[i][j] += A[k][j] * tmp; //Приводим матрицу к треугольному виду
            }
        }
    }
    d = 1;
    for (int i = 0; i < N; i++)
    {
        d *= A[i][i]; //Вычисляем определитель
    }
    cout << (int)d << endl;
    for (int i = 0; i < N; i++)
    {
        delete[] A[i];
    }
    delete[] A;
    system("pause");
    return 0;
}
Добавлено через 46 минут
P.S. Прошу прощения, тип матрицы, конечно double, но и это не решает проблему. При сдаче куча ошибок...

Добавлено через 4 минуты
...Хотя в условии сказано, что на входе - целые числа...Но при приведении матрицы к треугольному виду и вычислении определителя, многие числа должны быть дробными. Что делать? На входе должны быть целые числа, а при приведении к треугольному виду без дробных не обойтись...Может быть, в этом дело? Использовать приведение типов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2017, 20:22
Ответы с готовыми решениями:

Вычислить определитель матрицы
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; #include &lt;algorithm&gt; int main()

Вычислить определитель матрицы
int main () { int a1; int a2; int a3; cout&lt;&lt;&quot;Vvedite elementi pervoy stroki\n&quot;; for...

Вычислить определитель треугольной матрицы
Нужно вычислить определитель треугольной матрицы. на си, vstudio

Вычислить определитель матрицы 3х3
Дана матрица 3х3 нужно вычислить определитель матрицы 1 2 3 4 5 6 7 8 9 Заранее спасибо

2
353 / 134 / 28
Регистрация: 16.12.2012
Сообщений: 607
Записей в блоге: 1
17.05.2017, 00:17 2
Задача идиотская.
Давай представим матрицу 100 на 100. Причем треугольного вида. Где все элементы либо 0, либо 1е6. Ее определитель 1e600. Даже в лонг дабл не влезет.
Вывод - забей
1
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
17.05.2017, 17:33  [ТС] 3
Здравствуйте! Спасибо за ваш ответ! Может быть, вы знайте, что не так с этой задачей (проблема указана в ссылке)? Вот ссылка: Построение обратной матрицы (nan вместо значения элемента)
0
17.05.2017, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2017, 17:33
Помогаю со студенческими работами здесь

Вычислить определитель квадратной матрицы
Помогите пожалуйста написать код на С++(CodeGear). Нужно вычислить определитель квадратной...

Вычислить определитель матрицы методом Гаусса
Дана квадратная матрица A с целочисленными элементами. Найти det A методом Гаусса. Элементы...

Вычислить определитель матрицы третьего порядка
1) вычислить с помощью с++ определитель матрицы третьего порядка. 2) вычислить для заданной...

Вычислить определитель квадратной матрицы третьего порядка
Написать программу, которая вычисляет определитель квадратной матрицы третьего порядка.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru