Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
2-D array
1. Page 1 of 7
2D array
1-D ARRAY
IMPLEME ADDRESS
DEFINITION NTATION CALCULATION
ROW COLUMN
MAJOR 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] // c[I][J]=a[I][J]-b[I][J] IN CASE OF SUBSTRACTION;
}
}
else
{
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 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. 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 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. 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