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

Детерминант матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В функции не работает "cout >>" http://www.cyberforum.ru/cpp-beginners/thread114499.html
подскажите плиз что не так в коде, в swap хочу чтоб cout>> писало результаты работы функции..в мэйне все нормально, в функции же не работает. вот код #include "stdafx.h" #include "iostream"...
C++ помогите пожалуйста !! Ввести структуру для описания комплексного числа . Составить и протестировать функции для преобразования комплексного числа из показательной формы в алгебрическую. ((Ко́мпле́ксные чи́сла —... http://www.cyberforum.ru/cpp-beginners/thread114482.html
C++ Обработка исключений для new
Всем привет! Вопрос следующий. Когда функция new не может выделить память, то генериться исключение bad_alloc. Допустим есть следующий код: char* p; try { for(int...
рядки C++
помогите зделать прогу которая сделает выравнивание по правому краю введенного текста для чего в каждой строке использовать функцию WIDE(str.k) Добавлено через 2 часа 33 минуты помогите...
C++ Сортировка C++ http://www.cyberforum.ru/cpp-beginners/thread114431.html
Доброго времени суток. Помогите пожалуйста отсортировать массив структур любыми 2-мя способами (сорт. пузырьком, сорт. вставками, сорт. выбора) одним способом сортировка по цене, вторым по номеру. ...
C++ Производительность Подскажите, где или что почитать о том, как писать БЫСТРЫЕ программы? (про разработку высоконагруженных программ). Копаюсь в интернете - но нахожу крупицы... И всё бессистемно. Спасибо. подробнее

Показать сообщение отдельно
dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178

Детерминант матрицы - C++

08.04.2010, 22:41. Просмотров 687. Ответов 1
Метки (Все метки)

Доброго времени суток всем, кто не прошёл мимо моей темы!
Ради интереса написал программу для нахождения определителя матриц с помощью рекурсивных функций. Всё в общем-то получилось: результаты проверял с помощью Matlab. Но возникли всё же вопросы:

1. Программа при порядке матрицы большем за 8 сразу же (при запуске) выбивает ошибку приложения по типу : "память не может быть read".

2. Память под новые матрицы выделял динамически. А вот с удалением прошу помочь, где поставить оператор delete [].

Заранее спасибо!!!

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
#include <iostream>
#include <cstdlib>
#include <fstream>
 
using namespace std;
 
void print(double **,const int);
double determinant(double** ,int );
int sign(const int);
double** createMatrix(double **,const int ,const int);
 
int main()
{
   int size=9;
   double **a=new double*[size];
   ofstream array("array.txt",ios::out);
   
   for(int k=0;k<size;k++)
      a[k]=new double[size];
   
   for(int i=0;i<size;i++)
      for(int j=0;j<size;j++)
      {   
         a[i][j]=rand()%10;
         array<<a[i][j]<<endl;
      }  
   print(a,size);
         
   cout<<"\nDeterm is "<<determinant(a,size)<<endl;
   
   system("pause");
   return 0;   
}
 
double determinant(double **b,int rank)
{
   if(rank==2)
      return b[0][0]*b[1][1]-b[0][1]*b[1][0];
   else
   {
      double temp_sum=0; 
       
      for(int i=0;i<rank;i++)  
         temp_sum=temp_sum+sign(i)*b[i][0]*determinant(createMatrix(b,i,rank),rank-1);   
         
      return temp_sum;
   }
}
 
inline int sign(const int k)
{
   if(k%2==0)
      return 1;
   else
      return -1;       
}
 
double** createMatrix(double **matrix,const int p,const int r)
{
   double **newMatrix=new double*[r-1];
   
   for(int k=0;k<r;k++)
      newMatrix[k]=new double[r-1];
      
   for(int i=0;i<r-1;i++)
   {        
        if(i<p) 
           for(int j=0;j<r-1;j++)
              newMatrix[i][j]=matrix[i][j+1];    
        else
            for(int j=0;j<r-1;j++)
              newMatrix[i][j]=matrix[i+1][j+1];   
   }  
   return newMatrix;
}
 
void print(double **matrix,const int size)
{
   for(int i=0;i<size;i++)
      for(int j=0;j<size;j++)
         cout<<matrix[i][j]<<(j==size-1 ? "\n": "  ");
         
   cout<<endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru