C++ 如何在c+中以特定形式将内容从一维数组传输到二维数组+;?

C++ 如何在c+中以特定形式将内容从一维数组传输到二维数组+;?,c++,arrays,matrix,C++,Arrays,Matrix,结果一定是这样的 // Eg1: 1d array b[]={1,2,3} // 2d array // 1 0 3 // 0 2 0 // 1 0 3 //Eg2: 1d array b[]={1,2,3,4} // 2d array // 1 0 0 4 // 0 2 3 0 // 0 2 3 0 // 1 0 0 4 在运行时,C++中没有2D数组,至少在没有ADT的情况下是这样。二维数组仅在编译时存在,在运行时,您必须自己映射索引来线性寻址数组。让我们调用数组A

结果一定是这样的

// Eg1: 1d array 
b[]={1,2,3}

// 2d array 
// 1 0 3
// 0 2 0
// 1 0 3 

//Eg2: 1d array 
b[]={1,2,3,4}

// 2d array  
// 1 0 0 4 
// 0 2 3 0 
// 0 2 3 0 
// 1 0 0 4

在运行时,C++中没有2D数组,至少在没有ADT的情况下是这样。二维数组仅在编译时存在,在运行时,您必须自己映射索引来线性寻址数组。

让我们调用数组An的大小A和矩阵Mnxn

for(int i=0;i
类似的东西应该可以工作

//a[]是包含输入的一维数组,b[]]是包含结果的二维数组,n是数组的大小
// a[] is 1d array contain input, b[][] is 2d array that will contain result, n is size of the array

//set all b[][] content to 0 first
for (int i = 0; i < n;i++)
{
    for (int j = 0; j < n; j++) b[i][j] = 0;
}

//this is the process to move content from a[] to b[][]
for (int i = 0; i < n ;i++)
{
    b[i][i] = a[i];
    b[n-i-1][i] = a[i];
}
//首先将所有b[]]内容设置为0 对于(int i=0;i
请向我们展示您所尝试的东西。我是一名新手,所以我做不了什么。我只知道我们需要运行2个循环,并且我已经完成了一些从1d阵列到2d阵列的简单转换组合。请花一些时间阅读,尤其是名为和的部分。也请和。最后,请学习如何创建。继续并实现这些循环,当您遇到错误时,您将有一个更具体的问题要问。请这样思考:给定2D数组中的一个位置(x,y),应该指向哪个数字?写一份如何决定的流程图。(例如,它在角落里吗?在边上吗?等等)我不同意“在C++中没有2D数组这样的东西”的说法。数组的2D/Array有语法,它们被广泛使用并被称为数组。编译器为您处理2D->线性索引映射;计算机必须以线性方式访问内存,但您(程序员)不能。此外,这甚至没有试图成为OP问题的答案(不管问题的质量如何)。我没有看到可以映射任何内容的2D数组。我的结论是,由于他对此感到困惑,他收到了一个指向动态分配的数组的指针,并且不允许使用静态分配语义,我认为这不是一个不公平的评估。考虑到问题的质量,我只是尽力回答了。
// a[] is 1d array contain input, b[][] is 2d array that will contain result, n is size of the array

//set all b[][] content to 0 first
for (int i = 0; i < n;i++)
{
    for (int j = 0; j < n; j++) b[i][j] = 0;
}

//this is the process to move content from a[] to b[][]
for (int i = 0; i < n ;i++)
{
    b[i][i] = a[i];
    b[n-i-1][i] = a[i];
}