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

Определитель матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение кода Грея для 32-х разрядов http://www.cyberforum.ru/cpp-beginners/thread40539.html
помогите, пожалуйста, написать для лабораторной программу нахождения кода Грея для 32-х разрядов. Использую компилятор Visual c++ 2008. требования к программе: Числа вводятся и выводятся в десятичном виде. Реализовать и использовать классы двоичных чисел (в отдельном модуле, наследуются от чистого абстрактного класса, предоставляющего интерфейс для работы с числами): •Для разных классов...
C++ порграмма перемножения матриц Доброго времени суток! Прошу помощи в написании программы с требованиями: Входные данные – текстовый файл. реализовать генерацию данных случайным образом; включить в функциональность программы оценку времени выполнения алгоритма; оценить время работы алгоритма для матриц размерностей от 5 до 100 (верхний предел может быть больше), результаты измерений записать в файл; при этом время теста... http://www.cyberforum.ru/cpp-beginners/thread40534.html
программа сортировки методом пузырька C++
Доброго времени суток! Прошу помощи в написании программы с требованиями: •Входные данные – текстовый файл. •Выходные данные – текстовый файл, содержащий в качестве строк отсортированные слова входного файла. •Предусмотрен выбор вариантов сортировки (по убыванию/ по возрастанию). Кое-что кое-как сделал, при компиляции выдает кучу ошибок, как исправить их не пойму. Компилятор Visual с++...
C++ программку не для новичков
Обучаюсь на первом курсе. Пытался решить но безуспешно. :wall:Мне бы образец решения. Заранее благодарю!
C++ ошибки которых на самом деле нет http://www.cyberforum.ru/cpp-beginners/thread40508.html
possible use of идентификатор before diffinotion(С++) у меня в компиляторе возникает такое предупреждение, хотя все переменные объявлены ВО ВРЕМЯ. это происходит на компиляторе Borland 3.01 на borland 3.11 все идет нормально. хотелось бы узнать почему....код выложить на вряд ли смогу, он на 2500 строк.
C++ Сортировка массива. Имеется одномерный массив длиной n. Упорядочить массив методом выбора таким образом, чтобы элементы, находящиеся на четных позициях располагались по убыванию, а на нечетных позициях – по возрастанию. Я так думаю, что надо сначала отсортировать методом выбора, а затем показать четные и нечетные индексы. Как это сделать? const int n = 10; int a = {9, 6, 1, 16, 11, 14, 3, 19, 7, 4}; ... подробнее

Показать сообщение отдельно
batias
Сообщений: n/a

Определитель матрицы - C++

16.06.2009, 16:02. Просмотров 3099. Ответов 0
Метки (Все метки)

Здравствуйте, есть программа умножающая матрицы, нужно её дополнить чтобы считался ещё и определитель конечной матрицы. Код для вычисления определителя нашёл но прикрутить его не получается (выдает кучу ошибок).
Помогите если не сложно, сам быстро не разберусь(

моя программа
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 <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
const int str=10,stolb=10;
int k,l,p;
void input_matrix(double A[][stolb],int m, int n, char name) // Функция ввода
{ 
     cout<<"Input elements of "<<name<<endl;
     for (int i=0;i<m;i++)
     { 
         for(int j=0;j<n;j++)
         { 
                 cin>>A[i][j];
         }
     }
}
void output(double result[][stolb],int m,int n, char name) // функция вывода
{ cout<<"Matrix:"<<name<<endl;
     for(int i=0;i<m;i++)
         {for (int j=0;j<n;j++)
              { 
                   cout<<"  "<<result[i][j];   
              }
              cout<<endl;
         }
     cout<<"____________"<<endl;
}
void multiply(double A[][stolb],double B[][stolb],double C[][stolb]) // функция умножения
{     for(int i=0;i<k;i++)
     {
             for (int j=0;j<p;j++) //J должно быть меньше P, а не L
             {
                 C[i][j]=0;
                 for(int t=0;t<l;t++)
                 {
                         C[i][j] +=A[i][t]*B[t][j];
                 }
             }
     }
}
void trans(double C[][stolb],double D[][stolb]) //Транспонирование
   
{     for(int i=0;i<k;i++)
     {
             for (int j=0;j<p;j++)
             {
 
                         D[i][j]=C[j][i];
             }
     } 
}    
 
int main()
{
START: cout<<" Input number lines and column matrix's A"<<endl; // Вводим количество строк и столбцов матрицы А
cin>>k;
cin>>l;
cout<<"Input number column matrix's B"<<endl; // Вводим кол-во столбцов матрицы B
cin>>p;
cout<<endl;
 double A[str][stolb];
 double B[str][stolb];
 double C[str][stolb];
 double D[str][stolb];
 input_matrix(A,k,l,'A');
 input_matrix(B,l,p,'B');
 
 output(A,k,l,'A');
 output(B,l,p,'B'); 
 
 multiply(A,B,C);
 output(C,k,p,'C');
 
trans(C,D);
output(D,k,p,'D');
 
    
  system("PAUSE");
    goto START; // повторяем цикл
  return 0;
      }

программа для нахождения определителя
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
#include <stdio.h>
#include <conio.h>
 
void printMatrix(float** B, int n)  //print the matrix
{
    printf("\n");
    int x ,y;
    for(y=0; y<n; y++)
    {
        for(x=0; x<n; x++)
            printf("%7.2f", B[x][y]);
 
        printf("\n");
    }
    printf("\n");
}
 
//determinant razlozheniem po 1-oj stroke
float det(float **p, int n)
{
    int i,h,x,y;
    if(n==1)
        return **p;
  
    float d=0;
    for(i=0; i<n; ++i)
    {
        float **add = new float*[n-1];
        for(h=0; h<n-1; ++h)
            add[h] = new float[n-1];
    
        for(y=1; y<n; y++)
            for(x=0; x<n; x++)
            {
                if(x==i) continue;
                if(x<i)
                    add[x][y-1] = p[x][y];
                else
                    add[x-1][y-1] = p[x][y];
            }
 
        if(i%2) p[i][0] = -p[i][0];
        d += p[i][0]*det(add, n-1);
 
        for(h=0; h<n-1; ++h)
            delete[] add[h];
        delete[] add;
    }
 
    return d;
}
 
int main()
{
    int n=4,
        x, y;
  
    float **array = new float*[n];
    for(x=0; x<n; x++) 
        array[x] = new float[n];
 
    for(y=0; y<n; ++y)
        for(x=0; x<n; ++x)
            scanf("%f",  &array[x][y]);
    
    printMatrix(array, n);
    printf("determinant = %f\n", det(array, n));
    getch();
 
    for(x=0; x<n; ++x)
        delete[] array[x];
    delete[] array;
 
    return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru