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
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
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
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
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
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
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

2D Array

  • 1.
    Page 1 of7 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 of7 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 of7 { 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 of7 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 of7 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 of7 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 of7 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