gpt4 book ai didi

C - 二维矩阵,以两个对称的上下三角形的形状相加(几乎像X)

转载 作者:行者123 更新时间:2023-11-30 16:33:08 25 4
gpt4 key购买 nike

目标:仅添加属于完整 X(上三角形和下三角形)的矩阵部分。

1 1 1
0 1 0
1 1 1

像这样,中间的应该只添加一次。我无法正确添加下三角形。非常感谢帮助:)

void write(int niz[20][20], int n){
int i, j;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
scanf("%d", &niz[i][j]);
}
}
}

void x(int niz[20][20], int n){
//Upper triangle
int i, j, pr=n, suma=0;
for(i=0; i<n/2 + n%2; i++,pr--){
for(j=i; j<pr; j++){
suma += niz[i][j];
}
}
printf("%d\n",suma);

//Lower triangle
pr = n;
for(i=n; i>n/2 + n%2; i--,pr--){
printf("%d",pr);
for(j=n-i; j<pr; j++){
printf("\n%d", niz[i][j]);
suma += niz[i][j];
}
}
printf("%d", suma);
}

int main()
{
int n;
printf("Matrix dimensions: ");
scanf("%d", &n);
printf("Numbers in the matrix: \n");
int niz[n][n];

write(niz, n);
x(niz, n);
}

最佳答案

不必为每个下、上和对角线编写单独的函数,您可以通过一些小技巧将所有功能一起完成,但只有在 row == column 时才有效,我认为这就是您想要的。

int main() {
/* it can be anything like a[3][3] or a[7][7] and elements can
be all one or all 2 or any number */
int arr[5][5] = { {1,1,1,1,1},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{1,1,1,1,1} };
int row = sizeof(arr)/sizeof(arr[0]);
int col = sizeof(arr[0])/sizeof(arr[0][0]);
int sum = 0;
for(int index = 0; index < row; index++) {
for(int sub_index = 0; sub_index < col; sub_index++) {
if(index == 0 || (index == row-1) || sub_index == row/2)
sum = sum + arr[index][sub_index];
}
}
printf("sum = %d \n",sum);
return 0;
}

如果它可以帮助您编写自己的逻辑,那就太好了。

关于C - 二维矩阵,以两个对称的上下三角形的形状相加(几乎像X),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841932/

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