gpt4 book ai didi

c - 用递归程序计算矩阵的行列式时发现的最奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:47 24 4
gpt4 key购买 nike

请问有人能找到这段代码的错误吗?我尝试创建一个函数来计算矩阵 nXn 的行列式。该程序运行正常,但发生了“非常自然”的事情。我声明了类型为“char”的变量“ch”,我不再需要它了。但是,如果我删除此变量,则会发生执行错误。为什么?

/*the function 'pot' calculate a integer pow of a integer*/
int determinante( int** matriz , int dimensao ){
char cc;/*remove this variable and execute the code. On my PC a error occurr*/
int cont = dimensao;
int det = 0;
int i, j, k, aux;
int** matriz_aux;
if( cont > 1 ){
cont --;
for( i = 0; i < dimensao; i++){
matriz_aux = (int**) malloc( cont * sizeof(int*));
if( matriz_aux == NULL ){
printf("ERRO!\n");
exit(-3);
}
for( j = 0; j < cont; j++){
*(matriz_aux + j) = (int*) malloc( cont * sizeof(int));
if(*(matriz_aux + j) == NULL){
printf("ERRO!\n");
exit(-4);
}
}
for( j = 0; j < cont; j++){
for(k = 0, aux = 0; k < dimensao; k++){
printf("Aqui\n");
if( i != k ){
printf(" i = %d\n", i);

/*I forgive to add 'j' in '*(*(matriz + 1 + j) + k ). Now it works but the bug stay here*/

*(*(matriz_aux + j) + aux) = *(*(matriz + 1 + j) + k);
aux++;
}
}
}
det += matriz[0][i]*pot( -1, i)*determinante(matriz_aux, cont);
}
}
else {
det += matriz[0][0];
}

for( i = 0; i < cont; i++){
free( matriz_aux[i] );
}
free( matriz_aux );
//printf(" determinant value = %d\n", det);
return det;
}

最佳答案

错误是什么?如果删除该变量导致问题,则可能是堆栈溢出了。尝试在函数开始时将其设置为类似 0xAB 的值,然后在结束时将其打印出来。如果它发生变化,则说明您的代码有问题。

关于c - 用递归程序计算矩阵的行列式时发现的最奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4228200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com