Указатели, не могу разобраться
Добавлено: 02 мар 2011, 20:55
Есть такой код, матрицу беру из файла, при вычислении определителя вылазит систем эксепшн, дебаггер ругается на что-то в 20ой строчке, я думаю, что напутал с указателями. Не могли бы помочь исправить ошибку (возможно, не правильно считаю определитель?), и подсказать, как добавить вычисление сумм элементов главной, и 2ух диагоналей под главной? Спасибо.
Прошу помочь, завтра сдавать(
Код: Выделить всё
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
int * Minor(int *a,int n, int i,int j)
{
if (n<=1) return a;
else
{int **mass = new int *[n-1];
for(int k=0; k<n-1;k++)
{
mass[k] = new int[n-1];
}
for(int k = 0; k<n;k++)
{
for(int l = 0; l<n;l++)
{
if(l!=j || k!=i) mass[k][l] = a[k*(n-1)+l];
}
}
return *mass;
}
}
double Det(int *a, int n, int i, int j)
{
double res = 0;
double p=-1;
for(int k=0; k<n;k++)
{
res+=a[k*n]*pow(p,i+j)*Det(Minor(a,n,i,j),n,i+1,j);
}
return res;
}
int main()
{
int n = 0;
int m = 0;
//открываем файл
FILE * fp = fopen("matrix.txt", "r");
if (fp)
{
fscanf(fp,"%d %d",&n,&m);
}
else return 0;
int **a = new int *[n];
for(int i = 0; i<n;i++)
{
a[i] = new int[m];
}
for(int i = 0; i<n;i++)
{
for(int j = 0; j<m;j++)
{
fscanf(fp,"%d",&a[i][j]);
}
}
fclose(fp);
for(int i =0; i<n;i++)
{
for(int j =0; j<m;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("\n %d \n", Det(*a,n,0,0));
//return 0;
}