我必须计算方阵的对角线元素之和的差值

I have to calculate difference of sum of diagonal elements of a square matrix

本文关键字:元素 和的 对角线 计算 方阵      更新时间:2023-10-16

在以下程序中:

#include <iostream>
#include <cmath>
using namespace std;
int diagonalDifference(int x[][],int n)
{
int sum1=0,sum2=0,y;
for(int i=0;i<n;i++)
{
sum1+=x[i][i];
sum2+=x[i][n-1-i];
}
y=abs(sum1-sum2);
return y;   
}
int main()
{
int n,**z;
cin>>n;
int arr[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>arr[i][j];
}
}
z=diagonalDifference(arr,n);
cout<<x;
return 0;
}

我收到一个我不明白的编译错误。

error:declaration of 'x' as multidimensional array must have bounds for all dimensions except the first

你能帮我解决它吗?

int[][]不是有效的类型:

int diagonalDifference(int x[][],int n)

您将z声明为int**

int n,**z;

但是你给它分配了一个int

int diagonalDifference(int x[][],int n);
z=diagonalDifference(arr,n);

最后你打印x不存在的

cout<<x;

根据经验法则:

  • 每行只声明一个变量,并为其指定一个有意义的名称;
  • 声明可能的内容可以作为const;
  • 除非必要,否则不要使用 C 样式数组; 例如,更喜欢std::vector;
  • 不要使用using namespace std;
  • 您需要学习的还有很多。

.

int diagonalDifference(int x**,int n) { /* .... */ }
int matrix_size = 0;
std::cin >> matrix_size;
std::vector<std::vector<int>> matrix{matrix_size, std::vector<int>{matrix_size}};
/* fill the matrix */
const int diag_diff = diagonalDifference(matrix, matrix_size);
std::cout << diag_diff << 'n';