Jump to content
  • Advertisement
Sign in to follow this  

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

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

If you intended to correct an error in the post then please contact us.

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.
      System.Threading.Thread.Sleep(10000);
    }
  }
}

Share this post


Link to post
Share on other sites
Advertisement

Nope, test_array is 2D, so test_array isn't legal. Also, you can't use Array.Copy to copy between arrays with different dimensions.

 

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 this post


Link to post
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+1;
//Convert to A2D
for (int i=0;i<MAX;i++)
for (int j=0;j<MAX;j++)
if (j+1<=A1D) A2D[j]=A1D;
else A2D[j]=0;
return 0;
}

Share this post


Link to post
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;
                
            }

            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.
            System.Threading.Thread.Sleep(10000);
        }
    }
}

Share this post


Link to post
Share on other sites
Beware: GetUpperBound returns the last valid index for that rank, NOT the length. You want GetLength instead if you're using < in your loop. Edited by Nypyren

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!