#c #dynamic-memory-allocation
#c #динамическое выделение памяти
Вопрос:
Я не понимаю, почему у меня проблема в этом коде после выполнения некоторых тестов я понял, что в этой функции determinant_V2
я даже не могу печатать Mat[0][0]
. Я не понимаю, почему Mat
нельзя использовать в качестве параметра
int main()
{
int n =0, pos=1;
float tmp=0;
printf("entrez la taille de la matrice : ");
scanf("%d",amp;n);
float** Mat = (float**) calloc(n,sizeof(float *));
for(int i = 0 ; i< n; i ){
Mat[i] = (float*) calloc(n,sizeof(float));
}
for(int i=0; i<n; i ){
for(int j=0; j<n; j ){
printf("n entrer les valeurs de A[%d][%d] ",i 1,j 1);
scanf("O",Mat i j);
}
}
printf("delta general = %lf", determinant_V2(Mat,n));
return 0;
}
float** SousMatMinusLine(float** Mat, int taille ,int line){
float** sousMat = (float**) calloc(taille-1,sizeof(float *));
for(int i = 1 ; i< taille-1 ; i ){
if(i!=line){
sousMat[i] = (float*) calloc(taille-1,sizeof(float));
for(int j =1 ;j < taille-1; j ){
sousMat[i][j] = Mat[i][j];
}
}
}
//free(Mat);
return sousMat;
}
float determinant_V2(float ** Mat, int taille ){
int k = 1;
float det =0.0;
if(taille == 1){
return Mat[0][0];
}
for(int i =0 ; i<taille; i ){
float ** sous_Mat = SousMatMinusLine(Mat, taille,i);
det = determinant_V2(sous_Mat, taille -1 )*k ;
k *= -1;
}
return det;
}
Ответ №1:
Этот вызов scanf
scanf("O",Mat i j);
неверно. Вам нужно написать
scanf("O", *( Mat i ) j);
Комментарии:
1. я признаю, что это была глупая ошибка, спасибо, что помогли мне