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

# Loop Question

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

Commented:
initializers.

For example:

int x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,};
0

Commented:
Same as jhance 's comment, here is other example for array 2D

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

0

Author 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

Author 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

Commented:
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

Commented:
In some cases you can use memset(). Or is this homework?
0

Commented:
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

Author 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

Author 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

Commented:
memset(Magic, 0, sizeof(Magic));

This will fill it with NULL bytes
0

Commented:
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

Commented:
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

Commented:
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

Commented:
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

Author Commented:
Griessh

What is int arr[4,4];

Is this a 2d array? I thought all 2d arrays went like arr[4][4];
0

Commented:
Sorry, typo! Should be [4][4] ... <shame on me>

======
Werner
0

Commented:
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"

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/

======
Werner
0

Commented:
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.