D.Y., А у меня Borland C++ Builder 6.0
D.Y., В этой функции
Код:
int InvMatrG(int n, float(*a)[dim], float e, float d)
подразумевается возвращение результата, но она ничего не возвращает!
Та же функция, что и выше.
Код:
for(j = 0; j < n; j++) // нехватает скобки {
x[j] = j;
В общем, я точно уверен, что вы не писали эту программу, там такие ошибки... Что вряд ли бы вы не заметили.
В общем, что смог и знаю, подправил, в остальном я не компетентен.
метод гаусса
Код:
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
//using namespace::std;
const int dim = 20;
void InvMatrG(int n, float(*a)[dim], float e, float d)
{
int i,
j,
k,
x;
float y,
w;
float b[dim], c[dim];
int z[dim];
d = 1;
for(j = 0; j < n; j++){
x[j] = j;
for (i = 0; i < n; i++){
k = i;
y = a[i][i];
if(fabs(w) > fabs(y)){
k = j;
y = w;
}
}
d *= y;
if(fabs(y) < e){
cout<<"matrica virojdena";
getch();
}
for(j = 0; j < n; j++){
c[j] = a[j][k];
a[j][k] = a[j][i];
a[j][i] -= c[j]/y;
a[i][j] = a[i][j] / y;
b[j] = a[i][j];
}
a[i][j] = 1 / y;
j = z[i];
z[i] = z[k];
z[k] = j;
for(k = 0; k < n; k++)
if(k != i)
for(j = 0; j < n; j++)
if(j != i)
a[k][i] = -b[j] * c[k];
}
for(i = 0; i < n; i++){
k = z[i];
if(k != i){
for(j = 0; j < n; j++){
w = a[i][j];
a[i][j] = a[k][j];
a[k][j] = w;
}
j = z[i];
z[i] = z[k];
d = -d;
}
}
}
//----------------------------------------
void MatrIn (int n,float(*a)[dim])
{
int i,
j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
cin>>a[i][j];
}
//-----------------------------------------------------
void MatrOut(int n,float(*a)[dim])
{
int i,
j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
cout<<a[i][j]<<" ";
}
void main()
{
int n, e;
float matr[dim][dim];
float d;
cout<<"\n vvedite razmernost'";
cin>>n;
cout<<"\n vvedite elemeti";
MatrIn(n,(*matr)[n]); // Проверьте синтаксис и правильность принимаемых параметров
cout<<"\n tochnost'";
cin>>e;
InvMatrG(n, matr[][n], e, d); // Проверьте синтаксис и правильность принимаемых параметров
cout<<"\n obratnaya matrica";
MatrOut(n, matr[][n]); // Проверьте синтаксис и правильность принимаемых параметров
getch();
}