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

Неправильно считает определитель - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить А в степени n http://www.cyberforum.ru/cpp-beginners/thread1174717.html
Дан массив размером n×n, элементы которого целые числа.Вычислить А^n, где n – натуральное число
C++ Подсчитать количество слов списка, которые начинаются и заканчиваются одной и той же буквой Как написать программу с функциями, которая подсчитывает количество слов списка Р, которые: а)начинаются и заканчиваются одной и той же буквой; б)начинаются с той же буквы, на которую заканчивается... http://www.cyberforum.ru/cpp-beginners/thread1174716.html
Аналог С функции fread и fwrite в С++ C++
Здравствуйте, какие есть аналоги функций fread() fwrite в С++?
Выделить отдельные слова в строке и записать их в массив C++
Задано строку из трех слов. Выделить отдельные слова и записать их в массив, рассортировав по количеству букв (по возрастанию). Вывести массив слов на экран.
C++ Транспонирование матрицы для размера NxM http://www.cyberforum.ru/cpp-beginners/thread1174656.html
Есть класс матрица, делаю метод "транспонирование", и вообщем проблема в том, что программа нормально работает для матриц NxN, а вот для NxM нет. Помогите решить проблему. Метод: Matrix...
C++ Программа с использованием цикла Даны положительные числа A и B (A> B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой... подробнее

Показать сообщение отдельно
Max161995
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 15

Неправильно считает определитель - C++

13.05.2014, 17:59. Просмотров 232. Ответов 0
Метки (Все метки)

Подскажите,пожалуйста,почему моя программа неправильно находит определители после замены jго столбца столбцом свободных членов.Матрицу системы считает правильно.Определитель нахожу обнулением элементов ниже главной диагонали.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "stdafx.h"
#include "iostream"
#include "cmath"
using namespace std;
void input(float**A,float*B,float**C,int n);
void preobr(float**A,int n);
float determinant(float**A,int n);
void obmen(float**A,float*B,float**C,float*d,int n);
void korni(float**A,float*d,int n);
 
int main(int argc, char* argv[])
{int n;
 printf("Razmernost: ");
 cin>>n;
 float**A=new float*[n];
 for (int i=0;i<n;i++)
     A[i]=new float[n];
 float *B=new float[n];
 
 float**C=new float*[n];
 for (int i=0;i<n;i++)
     C[i]=new float[n];
 float *d=new float[n];
 
 input(A,B,C,n);
 preobr(A,n);
 cout<<"opr raven "<<determinant(A,n)<<"\n\n";
 obmen(A,B,C,d,n);
 korni(A,d,n);
 system ("pause");
 return 0;
}
void input(float**A,float*B,float**C,int n)
{int i,j;bool w=true;
while(w!=false)
   {
      printf("Vvod matrici A: \n");
      for(i=0;i<n;i++)
        {
          for(j=0;j<n;j++)
            {
              cin>>A[i][j];
            }
        }
      w=false;
      for(i=0;i<n;i++)
        {
          if(A[i][i]==0)
            {
              printf("\n\n->Na diagonali estj 0!;\n->Vvedite matricu zanovo!\n\n");
              w=true;
            }
        }
   }
 
 //ввели матрицу А
 printf("\n Matrica A: \n\n");
 for(i=0;i<n;i++)
   {
     for(j=0;j<n;j++)
     printf("%6.2f\t",A[i][j]);
     printf("\n\n");
   }
 
 for (i=0;i<n;i++)
     for (j=0;j<n;j++)
         C[i][j]=A[i][j];
 
 
 //Ввели вектор-столбец В
 printf("Vvod matrici B: \n");
 for(i=0;i<n;i++)
   {
     cin>>B[i];
   }
 
 printf("\n Matrica B: \n\n");
 for(i=0;i<n;i++)
   {
     printf("%6.2f\t",B[i]);
     printf("\n");
   }
}
void preobr(float**A,int n)
{int i,j,k=0;float kf;
    for(i=0;i<n-1;i++)
     for(k=i+1;k<n;k++)
       {
         kf=A[k][i]/A[i][i];
         A[k][i]=0;
         for(j=i+1;j<n;j++)
           {
             A[k][j]=A[k][j]-kf*A[i][j];
           }    
     }
cout<<"\nMatrica preobraz \n\n";
for (i=0;i<n;i++)
{for (j=0;j<n;j++)
cout<<"\t"<<A[i][j];
cout<<"\n\n";}
 
}
float determinant(float**A,int n)
{int i,j;
float det=1;
if (n==2)
det=A[0][0]*A[1][1]-A[1][0]*A[0][1];
else
{
    for (i=0;i<n;i++)
      for (j=0;j<n;j++)
          if (i==j)
              det=det*A[i][j];}
  return det;}
void obmen(float**A,float*B,float**C,float*d,int n)
{int i,j;
for (int i=0;i<n;i++)
     for (int j=0;j<n;j++)
         A[i][j]=C[i][j];
    for (j=0;j<n;j++)
 {
     cout<<"\nZamena v A "<<j+1<<" stolbca na B \n\n";
     for (i=0;i<n;i++)
         A[i][j]=B[i];
for (int i=0;i<n;i++)
{for (int j=0;j<n;j++)
cout<<"\t"<<A[i][j];
cout<<"\n\n";}
preobr(A,n);
cout<<"opr raven "<<determinant(A,n)<<"\n\n";
d[j]=determinant(A,n);
for (int i=0;i<n;i++)
     for (int j=0;j<n;j++)
         A[i][j]=C[i][j];}
}
void korni(float**A,float*d,int n)
{for (int i=0;i<n;i++)
cout<<"x"<<i+1<<" = "<<d[i]/determinant(A,n);}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru