我必须计算方阵的对角线元素之和的差值
I have to calculate difference of sum of diagonal elements of a square matrix
在以下程序中:
#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';
相关文章:
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 我有一系列阵列.可以从一个数组中阅读一些元素和另一个数组中的其他元素
- 在查找子集中元素和元素数量之间的二进制比较背后的逻辑是什么?
- 具有不同类型的元素和使用类的 2D 数组
- 是否可以定义一个宏来定义枚举类和返回枚举元素计数的 GetCount() 方法
- 数组中相邻元素差异的最大和
- 如何在不知道大小的情况下编写过程来修改动态数组的元素和大小
- 如何在不修改现有函数的情况下反转数组中除第一个和最后一个元素之外的所有元素
- 用于随机访问和元素循环的最佳数据结构(C++)
- 字符串和向量<string>元素之间的区别
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- 使用 std::unique 和 vector.erase 删除除最后一次出现的重复元素之外的所有元素
- 删除已创建的Qt元素和子类
- 将一个元素与具有 8 个具有相同值的元素和 1 个具有不同值的元素的九个元素的数组区分开来
- C++:元素和值这两个术语的意思是一样的吗
- std::unordered_map和由多个元素构建的密钥
- 具有不特定元素大小和元素数量的矢量
- 查找等于给定和的数组元素
- 比较set_intersection(公共元素)的大小和方向使用
- 交换两个序列的元素,使元素和的差最小