Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


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


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 ysg   Members   -  Reputation: 192

Like
0Likes
Like

Posted 12 April 2013 - 11:40 PM

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);
    }
  }
}


Sponsor:

#2 Paradigm Shifter   Crossbones+   -  Reputation: 5405

Like
0Likes
Like

Posted 13 April 2013 - 03:23 AM

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


"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#3 unbird   Crossbones+   -  Reputation: 5494

Like
1Likes
Like

Posted 13 April 2013 - 03:59 AM

Nope, test_array is 2D, so test_array[i] 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, 13 April 2013 - 11:29 AM.


#4 markspend001   Members   -  Reputation: 100

Like
-1Likes
Like

Posted 20 April 2013 - 07:56 AM

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;
}



#5 rafciok_6   Members   -  Reputation: 119

Like
0Likes
Like

Posted 30 April 2013 - 09:52 AM

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


#6 Nypyren   Crossbones+   -  Reputation: 4489

Like
0Likes
Like

Posted 30 April 2013 - 11:33 AM

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, 30 April 2013 - 11:33 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS