gpt4 book ai didi

c++ - C++中矩阵的输出不正确

转载 作者:行者123 更新时间:2023-11-28 05:33:17 25 4
gpt4 key购买 nike

我正在编写一个代码来获取一个值并创建一个矩阵,该矩阵的大小允许制作 1 的金字塔,因此顶部的金字塔位于 x-1 元素处。例如,如果输入为 5,则输出为:

0 0 0 0 1 0 0 0 0
0 0 0 1 0 1 0 0 0
0 0 1 0 0 0 1 0 0
0 1 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 1

问题是代码生成的值不应该是 1,或者它没有以正确的方式输出矩阵。我已经尝试在代码中添加一个 cout,它将一些值定义为 1 并且这些值是正确的,所以我相信问题出在输出中。例如,输入 x 将给出

0 0 0 0 1 0 0 0 1 
0 0 0 1 0 1 0 1 0
1 0 1 0 0 0 1 0 0
0 1 0 0 0 1 0 1 0
1 0 1 0 0 0 0 0 1

代码如下:

#include <iostream>
using namespace std;

int main() {
cout << "Matrix size:";
int x;
cin >> x;
int arr1[2*x][x];
for (int initialX=0; initialX<x; initialX++){
for (int initialY=0; initialY<=((2*x)-2); initialY++){
arr1[initialX][initialY]=0;
}
}
for (int set=0; set<x; set++){
arr1[set][x-1-set]=1;
arr1[set][x-1+set]=1;
}
for (int outX=0; outX<x; outX++){
for (int outY=0; outY<(2*x-1); outY++){
cout << arr1[outX][outY] << " ";
}
cout << endl;
}
return 0;
}

这是我第一次在 C++ 中使用矩阵,因此非常感谢任何有关矩阵的帮助。另外,如果它很重要,我正在使用 c++11。提前谢谢你。

最佳答案

需要切换数组维度。而不是

int arr1[2*x][x];

使用

int arr1[x][2*x];

由于该错误,您正在越界访问数组,这会导致未定义的行为。

由于 VLA 不是标准 C++,我强烈推荐使用 std::vector

std::vector<std::vector<int>> arr1(x, std::vector<int>(2*x));

这也会将所有元素初始化为 0,并且无需编写显式代码来将数组元素初始化为 0

关于c++ - C++中矩阵的输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922705/

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