NCERT Solutions Class 12 Computer Science Chapter - Arrays
NCERT Solutions Class 12 Computer Science Chapter - Arrays
com
Computer Science
Chapter - Arrays
Question 1.
Observe the following C++ code and find out, which out of the given options (i) to (iv) are
the expected correct output. Also assign the maximum and minimum value that can be
assigned to the variable ‘Go’.
void main()
om
{ int X [4] = {100, 75, 10, 125};
int Go = random(2) + 2;
.c
for (int i = Go; i<4; i ++)
cout<<X [i]<<"$$"; ay
}
od
(i) 100$$75
(ii) 75$$10$$125$$
st
(iii) 75$$10$$
(iv) 10$$125$
e
di
Answer:
tu
Max. Value = 3
Min. Value = 2
w
w
Question 1.
Write the definition of a function grace score (int score [], int size) in C ++, which should
check all the elements of the array and give an increase of 5 to those scores which are less
than 40.
Example: if an array of seven integers is as follows:
45,35,85,80,33,27,90
After executing the function, the array content should be changed as follows :
45,40,85,80,38,32,90
Answer:
for(int i=0;i<size;i++)
{
if (score [i]<40)
score [i]=score[i]+5;
cout< }
}
Question 2.
om
Answer:
Original String SUCCESS
.c
Changed String S@C!ES!
ay
Question 3.
od
Find the output of the following:
st
#include<iostream.h>
e
{
for(int K=0; K<N; K++)
tu
if(K<split)
.s
A [K] + = K;
else
w
A[K] *=K; }
w
{
for (in K=0; K<N; K++)
(K%2==0)? Cout<<A[K]<<"%" :
cout<<A[K]<<endl;
}
void main()
{ int H [ ] = {30, 40, 50, 20, 10, 5};
switchover(H, 6, 3);
display(H, 6);
}
Answer:
30%41
52% 60
40% 25
Question 4.
An integer array A [30] [40] is stored along the column in the memory. If the element
A[20][25] is stored at 50000, find out the location of A[25] [30].
Answer:
om
bytes of storage. If the base address of the array P is 26500, find out the location of
P[20][10].
.c
Answer: ay
Total number of rows = 30
od
Total size = 2 bytes
Base Address = 26500
st
LOC(P[20][10]) = 27140
w
w
Question 6.
Write a function to sort any array of n elements using insertion sort. Array should be passed
as argument to the function.
Answer:
while (temp<a[ptr] )
{
a [ptr+1]=a[ptr] ; //Move Element
Forward
ptr--;
}
a[ptr+1]=temp; //Insert Element in Proper Place
}
Question 7.
Write a function NewMAT(int A[][],int r, int c) in C++, which accepts a 2d array of integer
and its size as parameters divide all those array elements by 6 which are not in the range 60
to 600(both values inclusive) in the 2d Array.
Answer:
om
void NewMAT(int A[] [] , int r,int c)
.c
{
for (int i = 0; i<r; i+ + ) ay
for (j=0; j=60)&&(A[1] [j)<=600))
A[i][j]/=6
od
OR
st
}
di
Question 8.
tu
Write the definition of a function Alter (intA[], int N) in C++, which should change all the
multiples of 5 in the array to 5 and rest of the elements as 0. For example, if an array of 10
.s
integers is as follows:
w
w
A[0] A[l] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
w
55 43 20 16 39 90 83 40 48 25
After executing the function, the array content should be changed as follows:
A[0] A[l] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
5 0 5 0 0 5 0 5 0 5
Answer:
A [i] = 5;
else
A [i] = 0;
}
OR
Any other correct equivalent function definition
Question 9.
A two dimensional array P[20] [50] is stored in the memory along the row with each of its
element occupying 4 bytes, find the address of the element P[10] [30], if the element P[5]
[5] is stored at the memory location 15000.
Answer:
Loc (P [I] [J] along the row =BaseAddress+W [(I-LBR)*C+ (J-LBC)]
om
(where C is the number of columns, LBR = LBC =0)
LOC (P [5] [5]) = BaseAddress + W* [I*C + J]
.c
15000 = BaseAddress + 4 * [5 * 50 + 5]
= BaseAddress + 4 * [250 + 5] ay
= BaseAddress + 4*255 = BaseAddress + 1020
BaseAddress = 15000 -1020 = 13980
od
LOC (P [10] [30]) = 13980 + 4* [10 * 50 + 30]
= 13980 + 4 * 530
st
= 13980 + 2120
e
= 16100
di
= 15000 + 4 [5 * 50 + 25]
w
= 15000 + 4 *275
= 15000 + 1100
w
= 16100
w
OR
(where C is the number of columns and LBR = LBC = 1)
LOC (P [5] [5])
15000 = BaseAddress + W [(I-1) *C + (J-1)]
= BaseAddress + 4 [4*50 + 4]
= BaseAddress + 4 [200 + 4]
= BaseAddress + 4 * 204
= BaseAddress + 816
BaseAddress = 15000 – 816 = 14184
LOC (P [10] [30])
= 14184 + 4 [(10 -1) * 50 + (30 -1)]
= 14184 + 4 [9*50 + 29]
= 14184 + 4*479
= 14184 + 1916
= 16100
Question 10.
Write the definition of function Change (int P[], int N) in C+ +, which should change all the
multiples of 10 in the array to 10 and rest of the element as 1. For example, if an arrary of
10 integers is as follows:
P[0] P[l] P[2] P[3] P[4] P[5] P[6] P[7] P[8] P[9]
100 43 20 56 32 91 80 40 45 21
After executing the function, the array content should be changed as follows:
om
P[0] P[l] P[2] P[3] P[4] P[5] P[6] P[7] P[8] P[9]
10 1 10 1 1 1 10 10 1 1
.c
Answer: ay
od
void Change (int P[ ] , int N)
{
st
P [i] = 10;
di
else.
tu
P [i] = 1;
}
.s
OR
w
Question 11.
Write code for a function odd Even (int s[], int N) in C+ + , to add 5 in all the odd values and
10 in all the even values of the array S.
Example : If the original content of the array S is
50 11 19 24 28
The modified content will be:
60 16 24 34 38
Answer:
{
if(s[i]%2!=0)
s[i]=s[i]+5;
else
s[i]=s [i]+10;
}
}
Question 12.
Write the definition for a function void Transfer (int A[6], int B[6]) in C++, which takes
integer arrays, each containing 6 elements as parameters. The function should exchange all
odd places (1st, 3rd and 5th) of the two arrays, for example
if the array A contains
15 10 12 21 52 76
om
And if the array B contains
.c
23 41 67 83ay 13 53
Then the function should make the contents of the array A as
od
15 41 12 83 52 53
st
23 10 67 21 13 76
.s
Answer:
w
{
w
int temp;
for (int i=;i<6; i+ = 2)
{
temp=A [i]
A [i] =B [i]
B [i] +temp;
}
}
Question 13.
Write a user-defined function DisTen (int A[] [4], int N, int M) in C++ to find and display all
the numbers, which are divisible by 10. For example if the content of array is:
12 20 13
2 10 30
The output should be
20 10 30
Answer:
om
if (A[i][j]%10==0)
cout << A [i] [ j] ;
}
.c
} ay
}
Question 14.
od
Write code for a function void Changeover (int P[], int N) in C++, which re-positions all the
elements of the array by shifting each of them to the next position and by shifting the last
st
0 1 2 3 4
.s
12 15 17 13 21
w
0 1 2 3 4
21 12 15 17 13
Answer:
}
}
Question 15.
Write code for a function void Convert (int T[], int Num) in C++, which re-positions all the
elements of the array by shifting each of them one to one position before and by shifting
the first element to the last position.
For example: If the content of the array is:
0 1 2 3 4
22 25 70 32 12
The changed Content will be:
om
0 1 2 3 4
25 70 32 12 22
.c
Answer: ay
void Convert (int T[], int Num)
od
{
int i, j, temp;
st
{
di
j = i - 1;
tu
temp = P [ i ] ;
P [i] = P[jl ;
.s
P[j] = temp;
w
}
}
w
Question 16.
w
Write a user-defined function DispNTen (int L[] [4], int R, int C) in C++ to find the display all
the numbers, which are not divisible by 10. For example if the content of array is :
20 17 30
12 19 10
The output should be
17 12 19
Answer:
om
Question 17.
Write a function Transfer (int A[], int B[], int Size) in C++ to copy the elements of array A into
array B in such a way that all the negative elements of A appear in the beginning of B,
.c
followed by all the positive elements, followed by all the zeroes maintaining their respective
ay
orders in array A. For example :
If the contents of array A are :
od
7, -23,3,0, -8, -3,4,0
The contents of array B should be
st
Answer:
tu
{
w
{
if(A[i]<0) B [i] =A [i] ; if (A [i] > 0)
w
B[i+1]=A[i];
else
B[i/2]=A[i];
}
}
Question 18.
A two dimensional array ARR[50] [20] is stored in the memory along the row with each of its
elements occupying 4 bytes. Find the address of the element ARR[30][10], if the element
ARR[10] [5] is stored at the memory location 15000.
Answer:
Loc (ARR[I] [J] along the row
= BaseAddress + W [(I – LBR) *C + (J – LBC)]
(where C is the number of columns, LBR = LBC = 0 LOC (ARR [10] [5])
= BaseAddress + W [I *C + J]
15000 = BaseAddress + 4 [10 * 20 + 5]
= BaseAddress + 4 [200 + 5]
= BaseAddress + 4 x 205
= BaseAddress + 820
BaseAddress = 15000 – 820
= 14180
LOC (ARR [30] [10]) = 14180 + 4 [30 * 20 + 10]
= 14180 + 4 * 610
= 14180 + 2440
= 16620
OR
LOC (ARR [30] [10]) = LOC (ARR [10] [5] + W [(I – LBR) * C + (J – LBC)]
= 15000 + 4 [(30-10) *20 + (10 – 5)]
= 15000 + 4 [20*20 + 5]
om
= 15000 + 4 *405
= 15000 + 1620
.c
= 16620
OR ay
Where C is the number of columns and LBR=LBC=1
od
LOC (ARR[10] [5])
15000 = BaseAddress + W [(I -1) * C + (J-l)]
st
= BaseAddress + 4 [9*20 + 4]
= BaseAddress + 4[180 + 4]
e
= BaseAddress + 4 * 184
di
= BaseAddress + 736
tu
= 14264 + 4*589
= 14264 + 2356
= 16620
Question 19.
Write a function SORTSCORE() in C++ to sort an array of structure IPL in descending order of
score using selection sort.
Note : Assume the following definition of structure IPL:
struct IPL:
{
int Score;
char Teamname[20];
};
Answer:
om
a [largest] = temp;
}
}
.c
Question 20.
ay
Write a function in C++ TWOTOONE() which accepts two array X[ ], Y[ ] and their size n as
od
argument. Both the arrays X[ ] and Y[ ] have the same number of elements. Transfer the
content from two arrays X[ ], Y[ ] to array Z[ ]. The even places (0,2,4…) of array Z[ ] should
st
get the contents from the array X[ ] and odd places (1,3,5…) of array Z[ ] should get the
e
Example : If the X[ ] array contains 30,60,90 and the Y[ ] array contains 10,20,50. Then Z[ ]
tu
Answer:
w
w
{
int z[n] ;
for (int I =0;i<n;i++)
{
if(i%2 == 0)
z [i] = x [i] ;
else
z [i] = y [i] ;
}
}
Question 21.
Write code for a function void EvenOdd (int T[], int C) in C+ + , to add 1 in all the odd values
and 2 in all the even values of the array T.
Example : If the original content of the array T is
35 12 16 69 26
The modified content will be:
36 14 18 70 28
Answer:
om
{
if (T[i] %2==0)
T [i] + = 2;
.c
else ay
T[i] + = 1;
}
od
}
Question 22.
st
Write a function SWAP2 CHANGE (int P[], int N) in C++ to modify the content of the array in
e
such a way that the elements, which are multiples of 10 swap with the value present in the
di
91,50,54,22,30,54
The content of array P should become
w
91,54,50,22,54,30
w
w
Answer:
}
}
Question 23.
Write a function SWAP2BEST (int ARR[], int Size) in C+ + to modify the content of the array
in such a way that the elements, which are multiples of 10 swap with the value present in
the very next position in the array.
For example:
If the content of array ARR is
90,56,45,20,34,54
The content of array ARR should become
56,90,45,34,20,54
Answer:
om
void SWAP2BEST (int ARR [] , int Size)
{
.c
for (int n=0; n<size; n++)
{ ay
if(ARR[n]%10 = =0)
{
od
int temp = 0;
temp = ARR [n];
st
ARR[n] = ARR[n+1];
e
n++;
tu
}
}
.s
}
w
Question 24.
Write the definition of a function AddTax(float Amt[], int N) in C + + , which should modify
w
each element of the array Amt having N elements, as per the following rules :
w
TOPIC-2
Two-dimensional Arrays
Question 1.
Write a function Alternate (int A[] [3], int N, int M) in C + + to display all alternate elements
from two-dimensional array A(starting from A[0][0]).
om
For example:
If the array is containing :
.c
23 54 76
37 19 28
ay
62 13 19
od
The output will be
23 76 19 62 19
e st
Answer:
di
tu
T++ ;
}
}
OR
void Alternative (int A[] [3] , intN, int M)
{
int *P=&A [0] [0] ;
for (int I = 0; I<N*M ; I+=2)
{
Cout<<*p<<" " ;
{ I+=2 ;
}
}
OR
Any other equivalent correct answer acceptable
Question 2.
Write a function in C++ to print the sum of all the non-negative elements present on both
the diagonal of a two dimensional array passed as the argument to the function.
Answer:
om
for(int K= 0;K<N;K++) if ( A[N-K-1][K] > 0 )
Sdiag+=A[N-K-1] [K] ;
.c
cout<<"Sum of all the non-negative elements on both the diagonals= "<<Sdiag;
} ay
Question 3.
od
Write a user-defined function swap_row(int ARR[][3],int R,int C) in C++ to swap the first row
values with the last row values : For example:
e st
10 20 30
di
40 50 60
tu
70 80 90
.s
Then after function call, the content of the array should be:
w
w
70 80 90
w
40 50 60
10 20 30
Answer:
}
Question 4.
Write a user-defined function SumLast 3 (int A [] [4], int N, int M) in C + + to find and display
the sum of all the values, which are ending with 3 (i.e., units place is 3). Fdr example if the
content of array is :
33 13 92
99 3 12
The output should be 49
Answer:
om
void SumLast 3 (int A[] [4], int N, int M)
{
int Sum=0;
.c
for(int i=0; i<N; i++) ay
for(int j = 0; j <M; j ++)
{
od
If (((A[i] [j]-3)% 10==0))
Sum=Sum+A[i][j];
st
}
e
cout<<sum;
di
}
Question 5.
tu
Write a user-defined function AddEnd2(int A[] [4], int N, int M) in C+ + to find and display
.s
the
sum of all the values, which are ending with 2 (i.e., units place is 2).
w
22 16 12
19 5 2
The output should be 36
Answer:
om
8
3
.c
7
ay
Answer:
od
{
e
{
tu
if(i==j)
w
}
w
}
Question 7.
Write a user-defined function int Sum Single(int A[4][4])in C++, which finds and returns the
sum of all numbers present in the first row of the array, for example, if the array contains
1 13 10 9
29 17 2 21
14 3 12 31
15 16 25 52
Then the function should return 33.
Answer:
om
33 90 76
21 43 59
The output will be
.c
12 67 90 21 59 ay
Answer:
od
st
for (int i = 0; i C; i + + )
di
{
if ( (i + j)%2 = =0)
.s
}
w
}
Short Answer Type Questions-II[3 marks each]
w
Question 1.
An array P[15][10] is stored along the column in the memory with each element requiring 4
bytes of storage. If the base address of array P is 1400, find out the location of P[8][5].
Answer:
Loc (P[8][5]) = B+W((I-Lr)+(J-Lc)M)
= 1400+4((8-0)+(5-0)15)
= 1732.
Question 2.
Given an array A[10][12] whose base address is 10000. Calculate the memory location of
A[2][5] if each element occupies 4 bytes and array is stored column wise.
Answer:
w=4
b=10000
m=10
n[i][i] = [b+ w(i-l1) + m(j-l2)
n[2][5] = [10000+ 4(2-0) + 10(5-0)]
n[2][5] = [10000 +8 +50 ]
n[2][5] = 10058
Question 3.
An array T[-1..35][-2..15] is stored in the memory along the row with each element
occupying 4 bytes. Find out the base address and address of element T[20][5], if an element
T[2][2] is stored at the memory location 3000. Find the total number of elements stored in T
and number of bytes allocated to T.
om
Answer:
.c
Take T[2][2] as the base address [BA],
sr=starting row, sc=starting column; ay
Along the row
A[i][j] = BA + size[nc*(i-sr) + (j-sc)]
od
T[20][5] = 3000 + 4 [ 18 * (20-2) + (5-2)]
= 3000 + 4[(18 * 18) + (3)]
st
= 3000 + 4[324 + 3]
e
= 3000 + 4(327)
di
= 3000 + 1308
tu
= 4308
nc = no. of columns sr=2 sc=2
.s
Question 4.
w
An array A[20] [30] is stored along the row in the memory with each element requiring 4
bytes of storage. If the base address of array A is 32000, find out the location of A[15][10].
Also, find the total number of elements present in this array.
Answer:
Array A[20] [30]
Base Address = 32000
Size of element(W)=4 bytes
A[I][J]=A[15][10] hence I=15 and J=10
Total Row (R)=20
Total Column (C)=30
A [I] IJ]=B + W[C(I-0)+(J-0)]
A[15][10]=32000 +4[30(15-0)+(10-0)]
= 32000+4[30(15)+10]
= 32000+4[450+10]
= 32000+4[460]
= 32000+1840
= 33840
Question 5.
An array T[25][20] is stored along the row in the memory with each element requiring 2
bytes of storage. If the base address of array T is 42000, find out the location of T[10][15].
Also, find the total number of elements present in this array.
Answer:
Array A[25] [20]
Base Address = 42000
Size of element(W)= 2 bytes
om
A[I][J]=A[10][15] hence I=10 and J=15
Total Row (R) = 25
.c
Total Column (C)= 20
A [I] [J] =B+ W[C(I-0)+(J-0)] ay
A[10] [15] =42000 +2[20(10-0)+(15-0)]
= 42000+2(20(10+15)]
od
= 42000+2[200+15]
= 42000+2(215]
st
= 42000+430]
e
= 42430
di
tu
Question 6.
An array S[10][15] is stored in the memory with each elements requiring 2 bytes of storage.
.s
If the base address of array S is 25000, determine the location of S[5] [10] if the array is S
w
Answer:
S[10][15] //Base address; 25000
W=2 bytes
S[5][10] =?
m(row)=0 i=5
n(column)=15 j=10
Array is stored in the memory along the column:
P[i][j] = Base address + u[i+mxj]
s[5][10] = 25000+2[5+10×10]
= 25000+2(5+100] [1]
= 25000+2[105]
= 25000+210
= 25210
Question 7.
An array T[15][10] is stored along the row in the memory with each element requiring 8
bytes of storage. If the base address of array T is 14000, find out the location of T[10][7].
Answer:
Base Address = 14000 = B
T [I][J] = B + W [C[I-Ir] + (J-Jc)]
= 14000 + 8 [10(10-0)+(7-0)]
= 14000 + 8 x 107
= 14000 + 856
= 14856
Question 8.
Each element of the array A[8][6] is stored using 4 bytes of memory. If the element A[2][4] is
om
stored at location 936, find the address of A[5][1]. Assume that the array is stored in Row
Major.
.c
Answer: ay
nr=8 nc=6 size = 4 bytes
od
A[2][4] = 936 A[5][1] = ?
Formula for row-major
st
= 936 + 4 * 15
tu
= 936 + 60
A[5][l] = 996
.s
w
Question 9.
w
Write a function REVCOL (in P[] [5], int N, int int M) in C++ to display the content of a two
w
15 12 56 45 51
13 91 92 87 63
11 23 61 46 81
The function should display output as:
11 23 61 46 81
13 91 92 87 63
15 12 56 45 51
Answer:
om
for (int I = 0; I<N/2; I++)
{
for (int J = 0; J<M; J++)
.c
{ ay
int T = P [I] [J] ;
P [1] [J] = P [N - I - 1] [J] ;
od
P[N-I-1] [J] = T;
}
st
}
e
{
for (int J=0; J<M; J++)
tu
cout<<end1;
w
}
w
}
w
Question 10.
Write a function REVROW (int N, int M) in C + + to display the content of a two dimensional
array, with each row content in reverse order.
For example, if the content of array is as follows:
15 12 56 45 51
13 91 92 87 63
11 23 61 46 81
The function should display output as follows:
51 45 56 12 15
63 87 92 91 13
81 46 61 23 81
Answer:
om
{
int T = P [I] [J] ;
P [I] [j] = P[I] [M - J - 1] ;
.c
P [I] [M - J - 1] = T; ay
}
}
od
for (I = 0; I<N; I++)
{
st
Cout<<P[I] [J] ;
di
cout<<end1;
}
tu
}
.s
Question 11.
S[50][20] is a two dimensional array, which is stored in the memory along the row with each
w
of its element occupying 4 bytes, find the address of the element S[5][15], if the element
w
Answer:
Question 12.
Write definition for a function SHOWMID (int P[][5], int R, int C) in C++ to display the
elements of first, third and fifth column from a two dimensional array P having R number of
Answer:
om
void SHOWMID (intP[] [5],intR,int C)
.c
{
for(int J=0; J<C; J++)
ay
Cout<<P[R/2][J]<<" ";
od
cout<<end1;
for (int I=0;I<R;I++)
st
Question 1.
T[20][50] is a two dimensional array, which is stored in the memory along the row with each
.s
of its element occupying 4 bytes, find the address of the element T[15][5], if the element
w
Answer:
T [20] [50]
Along the row
A [i] [j] = BA + size [((i – sr)*nc + j- sc)]
T [10] [8] = 52000
T [15] [5] =52000 + 4* ((15 – 10)*50 + (5-8))
= 52000 + 4* (250 + -3)
= 52000 + 4 * 247
= 52000 + 988
= 52988
Address = 52988
Question 2.
Write definition for a function SHOWMID (int P[][5]), int R, int C) in C++ to display the
elements of middle row and middle column from a two dimensional array P having R
number of rows and C number of columns.
For example, If the content of array is as follows:
om
Answer:
.c
void SHOWMID (int P[] [5] , int R, int C)
ay
{
od
for(int J=0;J<C;J++)
cout<<P[R/2] [J] <<" " ;
st
cout<<end1;
for(int I=0;I<R;I++)
e
cout<<P[I][C/2]<<" ";
di
}
tu
Question 3.
R[20][50] is a two dimensional array, which is stored in the memory along the row with each
.s
of its element occupying 8 bytes, find the address of the element R[5][15], if the element
w
Answer:
R[20] [50]
Along the row
A[i][j] = BA + size [(i – Sr)nc + (j-Sc)]
R[8][10] = 45000
R[5][15] = 45000+8* ((5 – 8)* 50 + (15 -10))
= 45000 + 8* (- 3*50 + 5)
= 45000 + 8* (-145)
= 45000-1160
R[5][15] = 43840