Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 267
  • Last Modified:

Loop Question

Instead of using to for loops to initialize a 2D array is there another way to initialize a 2D array?
0
Andy36
Asked:
Andy36
  • 5
  • 3
  • 2
  • +8
1 Solution
 
jhanceCommented:
initializers.

For example:

int x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,};
0
 
thienpnguyenCommented:
Same as jhance 's comment, here is other example for array 2D


int Arr[2][3] =
{
   { 3 , 5, 7 },
   { 1, 10, 20 }
};

 
0
 
Andy36Author Commented:
I mean is there a different way you can initialize a 2d array with some other kind of loop like a while or do while?
0
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

 
Andy36Author Commented:
I mean is there a different way you can initialize a 2d array with some other kind of loop like a while or do while?
0
 
jhanceCommented:
Just what _ARE_ you asking?  Loops are loops.  

for, do, while, etc. are all pretty much different words for the same thing.  You really have 3 choices:

1) A loop.
2) An initializer.
3) Straight line code.

Perhaps a better question would help as this one coupled with your comment is very confusing.
0
 
yonatCommented:
In some cases you can use memset(). Or is this homework?
0
 
TriskelionCommented:
You can use memset like yonat said and/or you can make the array static which will initialize it to all zero values.

static int Arr[2][3];
0
 
Andy36Author Commented:
I Have already initrialized a 2d array like this:

     for(int i = 0; i < n; i++)
          for(int j=0; j<n; j++) Magic[i][j] = 0;
          Magic[0][(n-1)/2]=1;//Middle of first row
                         //(i,j) is the current position.

How could I initialize it with a different loop? Or is it not possible?
0
 
Andy36Author Commented:
What is memset()? The homework is already done with the for loops. I just wanted to see if I could write it with a different loop.
0
 
MFCRichCommented:
memset(Magic, 0, sizeof(Magic));

This will fill it with NULL bytes
0
 
wendersonCommented:
You can also, initialize the first element with an arbitrary value, so, all the others will initialized to zero, ex.:

int array[10][10] = { 1 };

Wenderson
0
 
abelCommented:
If you really want to use a while-loop, you'll do the counting in it:

int i = 0;
while(i < 10)
{
    i++;
    //do inits
}

which is the same as:

for(int i=0; i<10; i++)
{
    //do inits
}


Cheers,
Abel
0
 
griesshCommented:
void main()
{
  int i,j;
  int arr[4,4];
  // FOR loop
  for (i=0; i< 3; i++) {
    for (j=0; j<3; j++) {
      arr[i,j] = i+j;
    }
  }
  // do - while loop
  i = 0;
  j = 0;
  do {
    do {
      arr[i,j] = i+j;
      i++;
    }
    while (j<3);
    j++;
  }
  while (i<3);

  // while loop
  i=0;
  j=0;
  while (i<3) {
    while (j<3) {
      arr[i,j] = i+j;
      i++;
    }
    j++;
  }

  // Mix
  i=0;
  while (i<3) {
    for (j=0; j<3; j++) {
      arr[i,j] = i+j;
    }
    j++;
  }
}


======
Werner
0
 
rtenhoveCommented:
For an N x N identity matrix, you could initialize it like so:

int m[N][N];

memset(m, 0, sizeof m );

for (int i = 0; i < N; i++)
    m[i][i] = 1;
You could also initialize the matrix from a file, assuming that you serialized the contents of the matrix previously.

You're probably looking for static initialization.

int m[2][3] = {{1,2,3},{4,5,6}};Alternatively, you could do it in a single loop:

int m[M][N];
int *pm = &(m[0][0]);

for (int i = 0; i < M * N; i++ )
    pm[i] = i;


0
 
Andy36Author Commented:
Griessh

What is int arr[4,4];
 
Is this a 2d array? I thought all 2d arrays went like arr[4][4];
0
 
griesshCommented:
Sorry, typo! Should be [4][4] ... <shame on me>

======
Werner
0
 
griesshCommented:
Dear Andy36

I think you forgot this question. I will ask Community Support to close it unless you finalize it within 7 days. You can always request to keep this question open. But remember, experts can only help you if you provide feedback to their questions.
Unless there is objection or further activity,  I will suggest to accept

     "jhance"

comment(s) as an answer.

If you think your question was not answered at all, you can post a request in Community support (please include this link) to refund your points. The link to the Community Support area is: http://www.experts-exchange.com/commspt/

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
======
Werner
0
 
MindphaserCommented:
Force accepted

** Mindphaser - Community Support Moderator **
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 5
  • 3
  • 2
  • +8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now