Log In
6 votes
39 )

Suppose a multidimensional array is declared as m(2:8,-4:1,6:10). If the base address is 200 and there are 4 words per memory location, then the address of A[5,-1,8] by using row order is ______.
in Programming 2.8k views
given ans :628
Okay..I copied that middle dimension wrongly..

628 is coming now..

But I have one doubt still..
please explain me your solution .

i don't know how to slove
multidimensional array is declared as m(2:8,-4:1,6:10)

How do we interpret this sentence?
It is interpreted as :-

A 3-D array whose frame no. Starts from 2 and ends at 8.

Total no. Of frames = (8-2+1)=7

In each frame, there are (-4:1,6:10) rows and columns respectively.

Which means (1-(-4)+1)=6 rows and (10-6+1)=5 columns.

Ultimately, there are 7 frames and each has 6 rows and 5 columns.

You can refer to the answer's diagram to get an idea.
In A[i][j][k] an array of 3 dimensions isnt i == row, j== column and k== height or frame ;

In above question it is represented as i== height , j== row  and k==column.

3 Answers

9 votes
Best answer

I have drawn a sketch of 3-D array to give a rough idea about how it looks consists of many 2-D arrays also referred as Frames.

First see the no. of frames already crossed(given by the 1st dimension).. this means finding out how many elements of frames have already been covered. For that find (no. Of rows * no. Of columns)*no. Of frames given.

After reaching that particular frame, treat the sum as a simple 2-D array sum. 

selected by
can you please explain how it will work with column major

Suppose a multidimensional array is declared as m(1:8,-5:5,-10:5). If the base address is 200 and there are 4 words per memory location, then the address of A[3,3,3] by using column order is ______.

@ sunil sarode Do you know it's ans? i am getting 2212.

5240 and thanks for reply :)
#rows = 5-(-5)=1 =11

#columns = 5-(-10)+1 =16

The 1st part should remain same like frame 1 and 2 are fully covered in A[3,3,3]. So 2frames*#rows*#columns = 2*11*16 = 352 --(i)

The 2nd part changes for column major : A[i,j,k]

(k-LSB)*#rows + (j-LSB)

By putting the values i got 143+8 --(ii)

i) + ii) = 503.

Base + 4B*503 =2212

I don't know how 5240 can be the answer. If you know the solution please share it here.

it is not natural for me hence i ask you 

Address = 400 + 4 * 1210 = 5240

Here they are finding the address of A[5,-1,8] right? You asked me to find A[3,3,3].
ok i am sorry i did not notice that.

I am following this for row  major and  what change i need to do for columns major ?

int k = C[i][j][k].

It means we have to cross, i 2D arrays, j 1D arrays, and k elements to reach our required element.

= B.A + (i_2D_arrays*no._elements_In_1_2D_Array + j*no._elements_in_1_1D_Array + k)*intsize

=B.A + (i_2D_arrays*no._elements_In_1_2D_Array*instsize + j*no._elements_in_1_1D_Array*intsize + k*intsize)

Address = B.A + ((i-LSB)_2D_arrays*no._elements_In_1_2D_Array*instsize + (k-LSB)*no._of_rows*intsize + (j-LSB)*intsize)

The bold parts are the correction. You were almost right :)

Given a 3D array A[1:8,-5:5,-10:5] stored in a column major order, if the base address is 400 and size of an element is 4 byte, what is the address of A[3][3][3]?

I'm also getting 2412


What is the correct answer?

Column major order


1 vote

answer  is very simple to find the address of multidimension array 

like in above problem if you go from left to right direction then  we find the adress of element in row major order  and if you are go from right to left direction then you find the address of element in column mjor order 

A[lb1......ub1][lb2.......ub2][lb3.......up3] is given array then 

Adress of the A[l][m][n]=base adress +[(l-lb1)(ub2-lb2+1)(ub3-lb3+1)+(m-lb2)(ub3-lb3+1)+n-lb3]*w

put the value and find the answer,anwer will come in this case 628

0 votes

Address calculation for N-D Array

Related questions

1 vote
0 answers
What is the Output of following Array ? A. 8 10 B. 10 8 C. 10 2 D. 8 1 E. Garbage value
asked Oct 20, 2018 in Programming Na462 629 views
1 vote
1 answer
If I have an array : int a[2][3][4] ; How to evaluate below Outputs ? 1. sizeof(*a) 2.sizeof(**a) 3. sizeof(a) Please explain precisely .
asked Jul 10, 2018 in Programming radha gogia 433 views
2 votes
2 answers
int main() { char arr[5][7][6]; char (*p)[5][7][6] = &arr; /* Hint: &arr - is of type const pointer to an array of 5 two dimensional arrays of size [7][6] */ printf("%d\n", (&arr + 1) - &arr); printf("%d\n", (char *)(&arr + 1) ... 0; } Ans--> 1 210 42 210 Questn) Can anyone please explain how output is calculated in all the printf statements and what difference 'unsigned' is making to the output.
asked Jun 19, 2018 in Programming Mayankprakash 747 views
2 votes
2 answers
int b[10][10]; int *a[10]; //How b[2][3] and a[2][3] will work??
asked Jul 3, 2017 in Programming jatin khachane 1 597 views