С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.05.2020
Сообщений: 1
1

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

13.05.2020, 10:00. Показов 1563. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана квадратная матрица 4x4, состоящая из действительных чисел (компоненты матрицы вводятся с клавиатуры). Написать программу, вычисляющую определитель матрицы. Нужно предусмотреть возможность некорректного ввода, возможность начать программу заново или завершить её после вычисления определителя, добавить сопроводительные сообщения для пользователя вроде «введите первую строку матрицы».
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2020, 10:00
Ответы с готовыми решениями:

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

Вычислить определитель матрицы
Здравствуйте, уважаемые форумчане! Так получилось, что я снова решил пополнить свою коллекцию...

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

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

1
1552 / 727 / 316
Регистрация: 02.05.2020
Сообщений: 1,618
14.05.2020, 10:38 2
google "c++ determinant" выдаёт сразу почти готовое решение:
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 <math.h>
 
#define MAX_BUF 1000
 
double readValue()
{
  while (true)
  {
    double a;
    std::cin >> a;
    if (std::cin.fail())
    {
      std::cin.clear();
      std::cin.ignore(MAX_BUF, '\n');
      std::cout << "invalid input, try again" <<  std::endl;
    }
    else
    {
      std::cin.ignore(MAX_BUF, '\n');
      return a;
    }
  }
}
 
double determinant(double matrix[4][4], int n)
{   
  double det = 0;
  double submatrix[4][4];
  if (n == 2)
    return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));
  else
  {
    for (int x = 0; x < n; x++)
    {
      int subi = 0; 
      for (int i = 1; i < n; i++)
      {
        int subj = 0;
        for (int j = 0; j < n; j++)
        {
          if (j == x)
            continue;
          submatrix[subi][subj] = matrix[i][j];
          subj++;
        }
        subi++;
      }
      det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ));
    }
 }
 return det;
}
 
int main()
{
  int i, j;
  double matrix[4][4];
  std::cout << "Enter the elements of the matrix:" << std::endl;
  for (i = 0; i < 4; i++)
  {
    std::cout << i+1 << " row:" << std::endl;
    for (j = 0; j < 4; j++)
    {
      std::cout << "element " << i+1 << ", " << j+1 << "= ";
      matrix[i][j] = readValue();
    }
  }
  std::cout << "The entered matrix is:" << std::endl;
  for (i = 0; i < 4; ++i)
  {
    for (j = 0; j < 4; ++j)
      std::cout << matrix[i][j] << " ";
    std::cout << std::endl;
  }
  std::cout << "Determinant of the matrix is " << determinant(matrix, 4) << std::endl;
  return 0;
}
Добавлено через 13 минут
немного изменил:
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <math.h>
 
#define MAX_BUF 1000
 
bool repeat()
{
  while (true)
  {
    std::cout << "do you want to countinue (y/n)? ";
    char sm;
    std::cin >> sm;
    std::cin.ignore(MAX_BUF,'\n');
    if (sm == 'y')   
      return true;
    else if (sm == 'n')
      return false;
  } 
}
 
double readValue()
{
  while (true)
  {
    double a;
    std::cin >> a;
    if (std::cin.fail())
    {
      std::cin.clear();
      std::cin.ignore(MAX_BUF, '\n');
      std::cout << "invalid input, try again" <<  std::endl;
    }
    else
    {
      std::cin.ignore(MAX_BUF, '\n');
      return a;
    }
  }
}
 
double determinant(double matrix[4][4], int n)
{   
  double det = 0;
  double submatrix[4][4];
  if (n == 2)
    return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));
  else
  {
    for (int x = 0; x < n; x++)
    {
      int subi = 0; 
      for (int i = 1; i < n; i++)
      {
        int subj = 0;
        for (int j = 0; j < n; j++)
        {
          if (j == x)
            continue;
          submatrix[subi][subj] = matrix[i][j];
          subj++;
        }
        subi++;
      }
      det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ));
    }
 }
 return det;
}
 
int main()
{
  int i, j;
  double matrix[4][4];
  while (true)
  {
    std::cout << "Enter the elements of the matrix:" << std::endl;
    for (i = 0; i < 4; i++)
    {
      std::cout << i+1 << " row:" << std::endl;
      for (j = 0; j < 4; j++)
      {
        std::cout << "element " << i+1 << ", " << j+1 << "= ";
        matrix[i][j] = readValue();
      }
    }
    std::cout << "The entered matrix is:" << std::endl;
    for (i = 0; i < 4; ++i)
    {
      for (j = 0; j < 4; ++j)
        std::cout << matrix[i][j] << " ";
      std::cout << std::endl;
    }
    std::cout << "Determinant of the matrix is " << determinant(matrix, 4) << std::endl;
    if (!repeat())
      return 0;
  }
}
0
14.05.2020, 10:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2020, 10:38
Помогаю со студенческими работами здесь

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

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

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

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

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

Вычислить определитель матрицы и записать результат в файл
У меня есть написанный мною код на С++. Эта программа вычисляет определитель матрицы. Что нужно...


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

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