The document discusses 2D arrays, including their definition as an array of arrays, implementation methods of row-major and column-major ordering, and formulas for calculating element addresses based on storage method. It also covers basic arithmetic operations on 2D arrays like addition, subtraction, and multiplication. Examples of problems involving 2D arrays and their solutions are provided.
1. Page 1 of 7
2D array
1-D ARRAY
ADDRESS
CALCULATION
IMPLEME
NTATION
DEFINITION
ROW
MAJOR
COLUMN
MAJOR
Definition 2 D Array : A 2D array is an array in which each element is itself an
Array. 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. 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 column
CASE : 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 column
Basic Arithmetic Operation On 2 D Array.
-Addition
-Subtraction
-Multiplication
Addition OR Subtraction of two 2D Array : Addition of two 2D array can be performed
when 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. Page 3 of 7
{
c[I][J]=a[I][J]+b[I][J]
}
}
else
{
// c[I][J]=a[I][J]-b[I][J] IN CASE OF SUBSTRACTION;
cout<<”Matrix can not be added”;
return;
}
//resultant Matrix
for(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 rows
Of second matrix.
A[m1][n1] , B[m2][n2]
n1 = m2
Void 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. Page 4 of 7
return;
}
//resultant Matrix
for(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 Matrix
for(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 as
arguments and assign the elements into a two dimentional array of integer in the
following format :
If the array is 1,2,3,4,5,6 The resultant 2D array is Given below :
1
1
1
1
1
1
2
2
2
2
2
0
3
3
3
3
0
0
4
4
4
0
0
0
5
5
0
0
0
0
6
0
0
0
0
0
Prepared By Sumit Kumar Gupta, PGT Computer Science
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 2
Formula 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 2
Formula 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. 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-4
Formula 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=10
Address of A[4][5] or A[4,5] = 2000+ 8[( 4 - 1 )+10(5-1 )] .=2344
Problem 4 : If an array B[11][8] is stored is column wise and B[2][2] is stored at
and B[3][3] is stored at 1084 then find the address of B[5][3].
Ans. 1094 Marks - 4
1024
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. 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 ---- 2
Solving 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