2-D array

719 views
657 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
719
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2-D array

  1. 1. Page 1 of 7 2D array 1-D ARRAY IMPLEME ADDRESS DEFINITION NTATION CALCULATION ROW COLUMN MAJOR MAJORDefinition 2 D Array : A 2D array is an array in which each element is itself anArray. For instance , an array A[M][N] is an M X N matrix. Where : M = No. of rows N = No. of Columns M X N = No. of elements.Implementation of 2-D Array : There are two way to store elements of 2-D array in Memory . 1. Row Major - Where elements are stored row wise. 2. Column Major. Where elements are stored Column wise.Finding The Location(address) of an element in 2-D array :CASE : 1 . When elements are stored row wise :Case 1.1 When lower bond is not given. A[M][N] or A[M,N] Address of A[I][J] or A[I,J] = B+ W[N( I)+J] . M= Total No of Rows N= Total No of Columns I = Expected row J = Expected Column W = size of each element in byte.Case 1.2 When lower bound is given. A[Lr…Ur][Lc…Uc] or A[Lr : Ur , Lc : Uc] Address of A[I][J] or A[I,J] = B+ W[N( I - Lr )+(J-L c )] . Prepared By Sumit Kumar Gupta, PGT Computer Science
  2. 2. Page 2 of 7 N= Uc – Lc + 1 (Total No of Columns ) I = Expected row J = Expected Column W = size of each element in byte. Lr = Lower Bound of row Lc= Lower Bound of column Uc = Upper Bound of columnCASE : 2 . When elements are stored column wise:Case 2.1 When lower bond is not given. A[M][N] or A[M,N] Address of A[I][J] or A[I,J] = B+ W[M(J)+I] . M= Total No of Rows N= Total No of Columns I = Expected row J = Expected Column W = size of each element in byte.Case 2.2 When lower bound is given. A[Lr…Ur][Lc…Uc] or A[Lr : Ur , Lc : Uc] Address of A[I][J] or A[I,J] = B+ W[( I - Lr )+M(J-Lc )] . M= Uc – Lc + 1 (Total No of row) I = Expected row J = Expected Column W = size of each element in byte. Lr = Lower Bound of row Lc = Lower Bound of column Uc = Upper Bound of columnBasic Arithmetic Operation On 2 D Array.-Addition-Subtraction-MultiplicationAddition OR Subtraction of two 2D Array : Addition of two 2D array can be performedwhen they are equal in size.Function to find sum of two matrix: A[m1][n1] , B[m2][n2] void summatrix(int a[][],int m1, int n1, int b[][], int m2,int n2){int c[m1][n1];if (m1==m2 && n1==n2){for(int I=0;I<m1;I++){ for(int j=0;j<n1;j++) Prepared By Sumit Kumar Gupta, PGT Computer Science
  3. 3. Page 3 of 7{c[I][J]=a[I][J]+b[I][J] // c[I][J]=a[I][J]-b[I][J] IN CASE OF SUBSTRACTION;}}else{cout<<”Matrix can not be added”;return;}//resultant Matrixfor(int I=0;I<m1;I++){ for(int j=0;j<n1;j++){cout<<c[I][J]; }cout<<endl;}Multiplication of two 2-D array :Necessary condition : no. of columns of first matrix must be equal to no of rowsOf second matrix. A[m1][n1] , B[m2][n2] n1 = m2Void productmatrix(int a[][],int m1, int n1, int b[][], int m2,int n2){int sum ;int c[m1][n2] ;if (n1==m2 ){for(int I=0;I<m1;I++){ for(int j=0;j<n2;j++){ c[I][J]=0;for(int k=0;k<n1;k++){c[I][J]=a[I][K]*b[K][J]+c[I][J]; }}}}else{cout<<”Matrix can not be multiplied ”; Prepared By Sumit Kumar Gupta, PGT Computer Science
  4. 4. Page 4 of 7return;}//resultant Matrixfor(int I=0;I<m1;I++){ for(int j=0;j<n2;j++){cout<<c[I][J]; }cout<<endl;}Transpose of matrix : Interchanges of rows and columns of matrix .void transposematrix(int a[][],int m, int n){int tp[m][n];for(int I=0;I<m;I++){ for(int j=0;j<n;j++){tp[I][J]=a[J][I];}}//resultant Matrixfor(int I=0;I<n;I++){ for(int j=0;j<m;j++){cout<<c[I][J]; }cout<<endl;}}Problems On 2-D array :Problem 1 : Write a function in C++ which accept an integer array and its size asarguments and assign the elements into a two dimentional array of integer in thefollowing format : If the array is 1,2,3,4,5,6 The resultant 2D array is Given below : 1 2 3 4 5 6 1 2 3 4 5 0 1 2 3 4 0 0 1 2 3 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 Prepared By Sumit Kumar Gupta, PGT Computer Science
  5. 5. Page 5 of 7 Sol: void func(int a[] , int size) { int a2[size][size]; int I,j; for(I=0;I<size;I++) { for( j=0;j<size;j++) { if((I+j)>=size) { a2[I][j]=0; } else { a2[I][j]=a[j]; }cout<<a2[I][j]<<” “; } cout<<endl; } } Numerical Problems :Problem1: Calculate the address of the element a[3][5] of 2-D array a[7][20] stored in column wise matrix assume that the base address is 2000, each element required 2 bytes of storage. [Ans.2076] marks 2Formula used : A[M][N] or A[M,N] Address of A[I][J] or A[I,J] = B+ W[M(J)+I] . M= Total No of Rows = 7 N= Total No of Columns=20 I = Expected row =3 J = Expected Column =5 W = size of each element in byte.=2 Address of A[3][5]= 2000+2(7*5+3) = 2076.Problem2: Calculate the address of the element a[2][4] of 2-D array a[5][5] stored in row wise matrix assume that the base address is 1000, each element required 4 bytes of storage. [Ans.1056] marks 2Formula used : A[M][N] or A[M,N] Address of A[I][J] or A[I,J] = B+ W[N(I)+J] . M= Total No of Rows = 5 Prepared By Sumit Kumar Gupta, PGT Computer Science
  6. 6. Page 6 of 7 N= Total No of Columns=5 I = Expected row =2 J = Expected Column =4 W = size of each element in byte.=4 Address of A[2][4]= 1000+4(5*2+4) = 1056.Problem3: Each element of an array Data[1..10][1…10] required 8 byte of storage. If base address of array Data is 2000 determine the location of Data[4][5]. When the array is stored (i) row wise (ii) column wise. Ans .(i) 2272 (ii) 2344 Marks-4Formula used : (i) row wise A[Lr…Ur][Lc…Uc] or A[Lr : Ur , Lc : Uc] Address of A[I][J] or A[I,J] = B+ W[N( I - Lr )+(J-L c )] . N= Uc – Lc + 1 (Total No of Columns ) =10-1+1=10 I = Expected row =4 J = Expected Column=5 W = size of each element in byte.=8 Lr = Lower Bound of row=1 Lc= Lower Bound of column=1 Uc = Upper Bound of column=10 Address of A[4][5] or A[4,5] = 2000+ 8[10( 4 - 1 )+(5-1 )] . = 2272. (II) column wise A[Lr…Ur][Lc…Uc] or A[Lr : Ur , Lc : Uc] Address of A[I][J] or A[I,J] = B+ W[( I - Lr )+M(J-Lc )] . M= Uc – Lc + 1 (Total No of row) = 10-1+1=10 I = Expected row =4 J = Expected Column=5 W = size of each element in byte.=8 Lr = Lower Bound of row=1 Lc = Lower Bound of column=1 Uc = Upper Bound of column=10Address of A[4][5] or A[4,5] = 2000+ 8[( 4 - 1 )+10(5-1 )] .=2344Problem 4 : If an array B[11][8] is stored is column wise and B[2][2] is stored at 1024 and B[3][3] is stored at 1084 then find the address of B[5][3]. Ans. 1094 Marks - 4 A[M][N] or A[M,N] Address of A[I][J] or A[I,J] = B+ W[M(J)+I] . M= Total No of Rows N= Total No of Columns I = Expected row J = Expected Column Prepared By Sumit Kumar Gupta, PGT Computer Science
  7. 7. Page 7 of 7 W = size of each element in byte. Address of B[2][2]= B+ W[11*2+2]=1024 B+24W=1024 ---- equation—1 Address of B[3][3]= B+ W[11*3+3]=1084 B+ 36W=1084 equation ---- 2Solving above these two equation to obtain base address and size of a element . W=5 , B=904 Address of B[5][3]= 904+ 5[11*3+5]=1094 Prepared By Sumit Kumar Gupta, PGT Computer Science

×