GATE CSE
First time here? Checkout the FAQ!
x
+1 vote
169 views

 

I am not getting the answer , (11*8*13+67)*4+ base address =400+4844= 5244.

But the answer is 5336, please explain.

similar question is here: http://gateoverflow.in/29361/find-address-of-element-in-3d-array

asked in Programming by Active (2.1k points)   | 169 views
yes ,u r approach is correct.
what i am missing?
your answer is also correct.options are given wrong

@santhoshdevulapally  SIR  can u pls explain your approch in detail as answer to this question .?
Im getting 4840 :(

1 Answer

+1 vote

[Correct me if wrong... Im getting 5240 ]

Let D 3D Array be represented as $A\left [ lb1....ub1,lb2....ub2,lb3...ub3 \right ]$
Given Array : $A\left [ 1....8,-5....5,-10...5 \right ]$ 
 3D array is  $A\left [ 8,11,16 \right ]$ . 

A[i,j,k] = Base Address
             + [ 3D Cross
              + 2D Cross
               +  1D Cross ] * Size of one element
3D Cross
 $ (k-lb3) = 3- (-10) =13$ layers are to be crossed
Each layer having row * coloum  number of elements
 Total number of elements to be crossed = 13 * 8*11 = 1144

2D Cross
 $ (j-lb2) = 3- (-5) =8$ coloums are to be crossed
Each column having  " row "    number of elements
 Total number of elements to be crossed = 8*8 = 64

1D Cross
We are reached last coloumn . It will have
$ (i-lb1) = 3- (1) =2$ elements  to be crossed

Hence
 A [3,3,3] = 400
                 [+ 1144
                   + 64
                     + 2  ] * 4
                 = 400 + 4840
                  =5240

answered by Veteran (20.2k points)  

in the 1-d array access the 3rd element because it is the last row to access,no need to cross that element.

1-d array elements are ${\color{Red} 1,2,3},4,5,6,7,8$.so access until 3rd element.

1D Cross 
We are reached last coloumn . It will have 
(i−lb1)=3−(1)=2(i−lb1)=3−(1)=2 elements  to be crossed 

 

You need to access the third element also, the third element will give the required address, so the answer should be: 5244.

Still the answer the solution key is different , the thing to worry is that they too have some shitty explaination for it :P

@vishwa,5244 is correct answer.

@santhoshdevulapally  can u pls once again check ?  I'm still getting 5240

3rd Element will have base address 5240

A[1][3][3]=5236.

A[1,2,3( row)...8,-5(coloumn),...5,-10,...5(layers)]

i think last row u can access before the element but not the actual element,that is why u have different answer.

400+((3*11*8)+8*8+1)*4

=5236.

@santhoshdevulapally ,
400+((3*11*8)+8*8+1)*4   What is the reason for  adding extra 1 here  ?
I think  you are referring from http://gateoverflow.in/29361/find-address-of-element-in-3d-array .  I think that there also need one correction .


For simplicity just consider the array A[10.....13][-3....-1]  Base address : 200 . Each lement takes 1 B .  If used CMO  then what will be the location of A[13][-3]  ?

CMO stored as

The 2d Array will be A[14-11 +1 ][-1-(-3)+1] ie A[4][3]
A[i,j] = Base Address
             + [  2D Cross
               +  1D Cross ] * Size of one element

A[13][-3] =  200

               + [ (-3-(-3)) * 2
                    +13-(11) ]
A[13][-3] = 200+ (0*2+2)*1 =202

Correct me if wrong... 

u r correct bro.Nice explanation .

i just consider given link problem.
can anybody provide me with a refrence that says in A[x,y,z] z is for plane and not x
Top Users Feb 2017
  1. Arjun

    4898 Points

  2. Bikram

    4102 Points

  3. Habibkhan

    3748 Points

  4. Aboveallplayer

    2986 Points

  5. sriv_shubham

    2288 Points

  6. Smriti012

    2222 Points

  7. Arnabi

    1946 Points

  8. Debashish Deka

    1920 Points

  9. mcjoshi

    1614 Points

  10. sh!va

    1462 Points

Monthly Topper: Rs. 500 gift card

20,793 questions
25,951 answers
59,557 comments
21,976 users