gpt4 book ai didi

c - 矩阵行列式。错误输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:18 26 4
gpt4 key购买 nike

当我尝试计算矩阵的三阶行列式时,我收到了错误的输出。在二阶,它工作正常。更具体地说,我没有收到 9 个值(v[1,1]、v[1,2] 等),而是收到了更多。我认为这是数组的问题,但 idk..代码:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

void main(void) {
int i,j,n,i_max,j_max,ordin,i_m,j_m;
long int det;
int v[3][3];
int e[3];
int nr=0;

printf("\nIntroduceti ordinul matricei:\t");
scanf("%d",&n);

if (n==2) {
i_max=n;
j_max=n;
printf("\nIntroduceti valorile matricei:\n");
for (i=1;i<=i_max;i++) {
for (j=1;j<=j_max;j++) {
printf("v[%d,%d]= ",i,j);
scanf("%d",&(v[i][j]));
nr++;
e[nr] = v[i][j];
}
}

det = (e[1]*e[4])-(e[2]*e[3]);
printf("\nDeterminantul matricei este: %ld\n",det);
if (det != 0)
printf("Matricea de ordinul %d este inversabila !",n);
else printf("Matricea de ordinul %d nu este inversabila!",n);
} else if (n==3) {
i_m=n;
j_m=n;
printf("\nIntroduceti valorile matricei:\n");
for (i=1; i<= i_m; i++) {
for (j=1; j<= j_m; j++) {
printf("v[%d,%d]= ",i,j);
scanf("%d",&(v[i][j]));
nr++;
e[nr] = v[i][j];
}
}
det = (e[1]*e[5]*e[9])+(e[2]*e[6]*e[7])+(e[3]*e[4]*e[8])-(e[3]*e[5]*e[7])-(e[2]*e[4]*e[9])-(e[1]*e[6]*e[8]);
printf("Determinantul matricei este: %ld\n",det);
if (det != 0)
printf("Matricea de ordinul %d este inversabila!",n);
else
printf("Matricea de ordinul %d nu este inversabila!",n);
} else
printf("Ordinul matricei este incorect!");
return 0;
}

最佳答案

首先声明

int v[3][3];
int e[3];

e 没有足够的项目,因为您将它用于 v,它有 3 x 3 = 9 个元素。

所以好像把第二个语句改成就可以解决了

int e[9];

但这并不是故事的结局。

for 循环中,你不是从 0(这在 C 语言中很常见)开始循环,而是从 1 开始循环,所以你需要 1所有数组的更多索引!

所以声明

int v[4][4];         /* for using indices from 1 to 3 */
int e[10]; /* for using indices from 1 to 9 */

关于c - 矩阵行列式。错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077847/

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