Форум программистов, компьютерный форум 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. подробнее

Показать сообщение отдельно
19dmitry
 Аватар для 19dmitry
33 / 33 / 13
Регистрация: 18.01.2014
Сообщений: 113
18.01.2014, 23:58  [ТС]     Код вычисления определителя матрицы до 10-го порядка
Нашел такой код (извините за неправильное оформление - только осваиваюсь, обещаю исправиться):
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
#include <iostream>
#include <cmath>
#include <ctime>
 
using namespace std;
 
void Gauss(double *a, double *b, double *x,int n) // а - матрица коэффициентов, строки подряд, b - свободные члены, x - решение.
{
 int i,j,k,t;
 double kof,s;
 double temp;
 for (i=n-1; i>0; --i) // Цикл по уравнениям - вычитаемым
 {
  for (t=i, j=i-1; j>=0; --j) //Ищем строку с максимальным в i-том столбце коэффициентом.
  {
   if (fabs(a[i*n+t])<fabs(a[i*n+j]))
   {
    t=j;
   }
  }
  if (a[i*n+t]==0.0)
  {
   return;
  }
  if (t!=i) // Если она не i-тая
  {
   for (k=n-1; k>=0; --k) // Меняем её с i-той
   {
    temp=a[k*n+t];
    a[k*n+t]=a[k*n+i];
    a[k*n+i]=temp;
   }
  }
  for (j=i-1; j>=0; --j) // Цикл пo уравнениям-уменьшаемым
  {
   kof=a[i+j*n]/a[i*n+i]; // kof=a[j][i]/a[i][i];
   for (a[i+j*n]=0.0, b[j]-=b[i]*kof, k=i-1; k>=0; --k) // Цикл по столбцам
   {
    a[k+j*n]-=a[k+i*n]*kof; // a[k][j]-=a[k][i]*kof
   }
  }
 }
 x=new double [n];
 if (x)
 {
  for (i=0; i<n; ++i)
  {
   for (s=0.0, j=i-1; j>=0; --j)
   {
    s+=a[j+i*n]*x[j]; //s+=a[j][i]*x[j]
   }
   x[i]=(b[i]-s)/a[i*n+i]; // x[i]=(b[i]-s)/a[i][i];
   //cout << x[i] << "\n";
  }
 }
 cout << "\n";
 for (i=0; i<n; ++i)
cout << "x " << x[i] << endl;
}
 
 
main()
{
srand((unsigned)time(NULL));
      int n = 6;
     double gauss2[6] ={1,5,3,7,6,3};
      double M[36]={0, 0, 1,0, 0, 0,0, 0, 0, -1, 0, 0,0, 8, 0, 0, 0, 4,0, 0, 0, 0, 6,0, 0, 6, 0, 0, 0, 0,1, 0, 0, 0, 0, 0 };
        
      double *y = new double[n];
 
    /*  for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
                {
                    //cin >> M[i+j*n];
                     M[i+j*n] = rand()/100;
//cout << "gauss1["<< i << "][" << j << "]=";
//cin >> gauss1[i][j];
                }
        }
*/
for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
                {
                     cout << M[i*n+j] << "  ";
                }
                cout << gauss2[i] << endl;
        }   
      Gauss(M,gauss2,y,n);
       cin.get();
}
 
Текущее время: 16:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru