将1-D阵列转换为2-D阵列

时间:2017-01-26 04:51:20

标签: c++ arrays algorithm

我试图将1-D阵列转换为2-D阵列。例如,如果1-D阵列看起来像这样1 2 3 4;二维数组看起来应该是这样的 1 2 3 4 1 2 3 0 1 2 0 0 1 0 0 0 为此,我尝试了以下代码:

void main()
{
    int n;  
    cout<<"\nEnter the size of the 1D array";
    cin>>n;
    int *p=new int[n];
    int *m=new int[n][n];
    for (int i=0;i<n;i++)
    {
        cin>>p[i];
    }
    for(int j=0;j<n;j++)
    {
        m[i][j]=0;
    }
    for(int i=n;i>=0;i--)
    {
        int x=0;
        for(int j=0;j<i;j++)
        {
            m[x][j]=p[x];
            x++;
        }
    }
}

P.S:我已经排除了所有的头文件,我不需要帮助。请告诉我我在逻辑中犯的错误。我正在使用Turbo C ++ 4.5。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

指出错误

  1. 您定义了两次变量i和j。(可能只会弹出警告)
  2. 在这个循环中,我应该从n-1开始。

    for(int i=n;i>=0;i--)
    {
    int x=0;
    for(int j=0;j<i;j++)
    {
    m[x][j]=p[x];
    x++;
    }
    }
    
  3. 在上面的循环中,你只是一次又一次地分配对角元素,因为变量x和变量j将以相同的速率增加。