aeubanks
aeubanks

Reputation: 1311

Changing content of a matrix in c

How do you change just part of a matrix in c (I'm actually in Objective-C, but using matrices in c). For example:

NSInteger tempMapMatrix[100][100] =
   {{0,0,1,1,2,2,1,1,0,2,4,4,4,0,0,1,2,2,1,0,0,0,0,0,0},
    {0,1,1,2,3,2,1,1,4,4,3,4,4,0,0,1,2,2,1,0,0,0,0,0,0},
    {1,1,2,3,3,2,1,4,1,3,3,4,4,0,0,1,2,2,1,0,0,0,0,0,0},
    {1,1,3,3,3,2,4,1,1,1,4,4,4,0,0,1,2,2,1,0,0,0,0,0,0},
    {0,1,1,2,2,2,4,4,4,4,4,4,4,0,0,1,1,1,1,0,0,0,4,4,0},
    {0,0,1,1,2,2,1,0,0,2,3,4,4,0,0,0,0,0,0,0,0,0,4,4,0},
    {4,4,1,1,2,2,1,1,0,1,1,0,4,0,0,0,0,0,0,0,0,0,4,4,4},
    {0,4,1,2,2,2,1,1,0,4,4,4,4,4,4,4,0,0,0,0,1,0,0,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,4,0,3,3,3,3,3,3,3,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,4,4,3,2,2,2,2,2,3,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,4,4,3,2,3,3,3,2,3,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,4,4,3,2,3,2,2,2,3,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,4,3,3,2,3,2,3,3,3,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,4,4,1,2,2,3,2,0,0,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,4,3,3,3,3,3,0,0,0,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,4,4,0,0,0,0,0,0,0,0,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,0,1,0,0,0,0,0,0,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,0,1,0,0,0,1,1,1,0,0},
    {0,1,2,2,2,2,1,1,0,1,2,4,4,0,0,1,0,0,0,0,0,1,1,0,0},
    {0,0,1,2,2,2,1,0,0,0,4,4,4,0,0,1,1,0,0,0,0,0,1,0,0}};

then I want to change the first couple (x and y) of integers:

tempMapMatrix[100][100] =
   {{5,5,5,5,5,1,2,3},
    {5,5,5,5,5,1,2,3},
    {5,5,1,1,1,1,2,3},
    {5,5,1,5,5,1,2,3},
    {5,5,1,1,1,1,2,3},
    {5,5,5,5,5,5,5,5},
    {5,5,5,5,5,1,2,3},
    {5,2,2,2,5,1,2,3},
    {5,2,5,2,5,1,2,3},
    {5,2,2,2,5,1,2,3}};

but I'm getting an error (Expected Expression). I've tried

tempMapArray = stuff;
tempMapArray[][] = stuff;

but none work.

Any way to change the first couple of ints in the matrix?

Upvotes: 0

Views: 103

Answers (2)

Ephemera
Ephemera

Reputation: 8980

You have to access and change each element in the matrix individually.

I.e.:

tempMapMatrix[0][0] = 5;
tempMapMatrix[0][1] = //...

There is no way to "batch change" the contents of an array (one-dimensional or n-dimensional) in C.

The easiest way to achieve this effect is to write a for-loop and iterate over the contents of the two dimensional array and insert the required values in the required places.

Upvotes: 0

Jack
Jack

Reputation: 133587

You need to iterate over them, this is C, you don't have syntactic sugar to assingn pieces of arrays like you want. If you want to change, for example, every first element of each row you could do something like:

for (int = 0; i < 100; ++i) {
 tempMatrix[i][0] = 5;
}

so for the first couple of every row you should do

for (int = 0; i < 100; ++i) {
 tempMatrix[i][0] = 5;
 tempMatrix[i][1] = 5;
}

and so on.

Upvotes: 1

Related Questions