# How to copy a 1-D array into a 2-D array

This topic is 1724 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

What I'd like to do is to have a 2-D array and then populate that using a loop at only one interval the rest of the rows for each column. How can I do that?

In my case I'm getting this error in the first for-loop:
: Error CS1502: The best overloaded method match for System.Array.Copy(System.Array, System.Array, int)' has some invalid arguments (CS1502) (test)
namespace test
{
class MainClass
{
public static void Main (string[] args)
{
double [,] test_array = new double[4, 4];
double [] source_array = {1, 2, 3, 4};

for(int i = 0; i < test_array.GetUpperBound(0); i++)
{
System.Array.Copy(source_array, test_array[i, 0], 5);
}

for(int x = 0; x < 4; x++)
{
for(int y = 0; y < 4; y++)
{
System.Console.Write(test_array[x, y]);
System.Console.Write(" ");
}

System.Console.WriteLine();
}

// let's write more code, not less.
}
}
}

##### Share on other sites

Shouldn't it be

for(int i = 0; i < test_array.GetUpperBound(0); i++)
{
System.Array.Copy(source_array, test_array[i], 5);
}



Since test_array[i, 0] is a double, not an array

##### Share on other sites

Nope, test_array is 2D, so test_array[i] isn't legal. Also, you can't use Array.Copy to copy between arrays [url="http://msdn.microsoft.com/en-us/library/z50k9bft.aspx"]with different dimensions[/url].

There's no other way than to copy manually with a double loop, unfortunately. At least as far as I know.

Edited by unbird

##### Share on other sites

Hey Guys according to that i find a code like:

include <iostream>
using namespace std;
#define MAX 10
int A1D[MAX];
int A2D[MAX][MAX];
int main()
{
//Init A1D Array
for (int i=0;i<MAX;i++) A1D[i]=i+1;
//Convert to A2D
for (int i=0;i<MAX;i++)
for (int j=0;j<MAX;j++)
if (j+1<=A1D[i]) A2D[i][j]=A1D[i];
else A2D[i][j]=0;
return 0;
}

##### Share on other sites

Hope this is what you was looking for

namespace test
{
class MainClass
{
public static void Main(string[] args)
{
double[,] test_array = new double[4, 4];
double[] source_array = { 1, 2, 3, 4 };

for (int i = 0; i < 4; i++)
{
test_array[0, i] = source_array[i];

}

for (int x = 0; x < 4; x++)
{
for (int y = 0; y < 4; y++)
{
System.Console.Write(test_array[x, y]);
System.Console.Write(" ");
}

System.Console.WriteLine();
}

// let's write more code, not less.
}
}
}
`