【发布时间】:2020-08-23 16:55:38
【问题描述】:
判断一个多维数组的元素是否存在的条件有问题
例如 arr[row][col] 正是 arr[col][row] 然后自动将 arr[col][row] 的值分配给相同的值arr[row][col] 不让用户手动输入
这应该是输出的一个例子
example[4][4] =
{
// 0 1 2 3
{ 0, 10, 15, 18}, // 0
{ 10, 0, 20, 14}, // 1
{ 15, 20, 0, 90}, // 2
{ 18, 14,90, 0}, // 3
这是我的代码
` int size;
int arr[size][size];
cout<<"Choose size of your multidimensional array [matrix]: ",cin>>size;
cout<<"Now enter your data [Respectively] \n";
for(int d=0 ; d<size ; d++)
{
for(int j=0; j<size; j++)
{
if (d==j)
{
arr[d][j]=0 ;
}
else if(arr[d][j]!=0 ) //there should be the problem
{
arr[j][d]=arr[d][j];
}
else
{
cin>>arr[d][j]; // Filling matrix
}
}
} `
【问题讨论】:
-
&arr[d][j]==&arr[j][d]-->arr[d][j]== arr[j][d]。为什么要比较地址?此外,int arr[size][size]不是有效的 c++。 -
int arr[size][size];这里size使用未初始化 -
请注意,VLA:s(可变长度数组)不是标准 C++ 的一部分。 Why aren't variable-length arrays part of the C++ standard?
-
“好吧(使用未定义行为的代码)确实有效”这就是未定义行为的有趣之处。有时它甚至可能会起作用,这是最阴险的。
-
@Gradzidsa 如果您希望程序可移植,请不要使用
int arr[size][size];。相反,使用std::vector<std::vector<int>> arr(size, std::vector<int>(size));
标签: c++ matrix multidimensional-array