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

Нужен пример нахождения определителя матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура http://www.cyberforum.ru/cpp-beginners/thread96249.html
Описать структуру с именем TRAIN, содержащую следующие поля: Название пункта; номер поезда; Время отправления; Программа должна: Ввод с клавиатуры данных в масив состоящий из восьми элементов типа TRAIN;записи должны быть размещены в алфавитном порятке по названиям пунктов назначения; вывод на экран информации о поездах, отправляющихся после введённого с клавиатуры времини;
C++ соединить эл-ты массива Люди, подскажите, пожалуйста!!! Короче есть массив char arr1="1 2 3"; (3 элемента) Нужно соединить эти элементы 1,2 и 3 в одно число, чтобы получилось 123 а потом перевести в двоичную систему. В двоичную систему легко, но вот как соединить элементы??? http://www.cyberforum.ru/cpp-beginners/thread96230.html
Циклы C++
если честно, даже сам не знаю что нужно сделать с этой формулой. У читель тал текст, сказал написать на С++ с использованием циклов) больше ничего...подскажите что нужно сделать?)
перевести элементарные программы с delphi на С++ C++
Здравствуйте, я провожу анализ языков программирования по времени исполнения программ, но не владею С++, программы есть на delphi и все очень простые в несколько строчек, просьба перевести их на С++ список программ 1) Задача на длинную арифметику, подсчет факториала числа N=100; 2) Ханойские башни N =16; 3)Кол-во способов разбиения числа N на различные комбинации слагаемых (в целых числах)...
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread96223.html
Помогите пожалуйста, создать программку, вот задача: "Превратить строку так, чтобы все цифры в ней были отсортированы по убыванию". Заранее огромное спасибо за помощь
C++ Вывести количество чисел в наборе Дан набор ненулевых целых чисел; признак его завершения - число 0. Вывести количество чисел в наборе. Задача на С подробнее

Показать сообщение отдельно
Omlet
28 / 7 / 1
Регистрация: 07.04.2010
Сообщений: 3
18.04.2010, 13:50     Нужен пример нахождения определителя матрицы
Вчера написал. Программа считает определитель квадратной матрицы NxN методом Гауса:

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
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define NN 6
 
main()
{
clrscr();
 
float a[NN][NN],kst;
int i,j,n,p,k=0,t;
char yn;
 
// <----Ввод размера квадратной матрицы---->
 
while(k==0)
{
printf("\nВведите размер матрицы (от 2 до %d): N=",NN);
n=getche()-48;
if ((n<2) || (n>NN)) k=0;
else k=1;
}
 
// <----Ввод матрицы a[NN][NN]---->
 
k=0;
while(k==0)
{
printf("\n\nЗадать матрицу случайно? y/n: ");
yn=getche();
if ((yn=='y') || (yn=='n')) k=1;
else k=0;
}
switch(yn)
{
case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%100;break;
default:
{
printf("\nВведите матрицу %dx%d\n",n,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
}
break;
}
 
 
// <----Выводим введенную матрицу---->
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
printf("\n\n");
}
 
// <----Считаем определитель---->
 
p=0;
for (i=0; i<n-1; i++)
{
t=1;
while(a[i][i]==0)
{
for(j=0; j<n; j++)
{
a[i][j]=kst;
a[i][j]=a[i+t][j];
a[i+t][j]=kst;
}
p++;
t++;
}
 
for (k=i+1; k<n; k++)
{
kst=a[k][i]/a[i][i];
for(j=0; j<n; j++)
a[k][j]-=a[i][j]*kst;
}
}
 
kst=pow(-1,p);
for(i=0; i<n; i++)
kst*=a[i][i];
 
printf("Определитель равен: %14.3f",kst);
getch();
}
Изначально требовалось найти минор матрицы. Сама программа:

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define NN 6
 
main()
{
clrscr();
 
float a[NN][NN],kst;
int i,j,n,im,jm,p,k=0,t;
char yn;
 
// <----Ввод размера квадратной матрицы---->
 
while(k==0)
{
printf("\nВведите размер матрицы (от 2 до %d): N=",NN);
n=getche()-48;
if ((n<2) || (n>NN)) k=0;
else k=1;
}
 
// <----Ввод матрицы a[NN][NN]---->
 
k=0;
while(k==0)
{
printf("\n\nЗадать матрицу случайно? y/n: ");
yn=getche();
if ((yn=='y') || (yn=='n')) k=1;
else k=0;
}
switch(yn)
{
case 'y': for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=rand()%100;break;
default:
{
printf("\nВведите матрицу %dx%d\n",n,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
}
break;
}
 
 
// <----Выводим введенную матрицу---->
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
printf("\n\n");
}
 
// <----Вводим минор---->
printf("По какому элементу искать минор? i=");
im=getche()-49;
printf(" j=");
jm=getche()-49;
 
// <----Считаем матрицу минора---->
 
for (i=0; i<n; i++)
if(i==im) for(p=i; p<n; p++) for(j=0; j<n; j++) a[p][j]=a[p+1][j];
for (j=0; j<n; j++)
if(j==jm) for(p=j; p<n; p++) for(i=0; i<n; i++) a[i][p]=a[i][p+1];
n-=1;
 
// <----Выводим матрицу минора---->
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf("%6.2f\t",a[i][j]);
printf("\n\n");
}
 
// <----Считаем минор---->
 
p=0;
for (i=0; i<n-1; i++)
{
t=1;
while(a[i][i]==0)
{
for(j=0; j<n; j++)
{
a[i][j]=kst;
a[i][j]=a[i+t][j];
a[i+t][j]=kst;
}
p++;
t++;
}
 
for (k=i+1; k<n; k++)
{
kst=a[k][i]/a[i][i];
for(j=0; j<n; j++)
a[k][j]-=a[i][j]*kst;
}
}
 
kst=pow(-1,p);
for(i=0; i<n; i++)
kst*=a[i][i];
 
printf("Минор по А[%d][%d] равен: %14.3f",im+1,jm+1,kst);
getch();
}
Может кому и пригодится.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru