aglasem.com
Schools Admission Mock Test Playground
ClassChoose class
StateSelect state

CBSE Class 12 Computer Science Question Paper 2019 Solutions

CBSE Previous Year Question Paper Solutions for Class 12 for Computer Science are given here for Year 2019. You can download CBSE Class 12 Solutions 2019 from AglaSem for Free. More Detail
CBSE Class 12 Computer Science Question Paper 2019 Solutions - Page 1 of 45

Finished viewing? Save it for later —

Download CBSE Class 12 Computer Science Question Paper 2019 Solutions (PDF · 45 pages)
Downloaded 41 times

About CBSE Class 12 Computer Science Question Paper 2019 Solutions

CBSE Class 12 Computer Science Question Paper 2019 Solutions is available here for free download. Published by CBSE for Class 12, this solution can be viewed online or downloaded as a PDF (45 pages). Candidates preparing for Class 12 can use CBSE Class 12 Computer Science Question Paper 2019 Solutions to understand the exam pattern, the type of questions asked, and the overall difficulty level.

Frequently Asked Questions

How can I download CBSE Class 12 Computer Science Question Paper 2019 Solutions?

Open this page and click the Download button to save CBSE Class 12 Computer Science Question Paper 2019 Solutions as a PDF. It is completely free on AglaSem Docs.

Is CBSE Class 12 Computer Science Question Paper 2019 Solutions free to download?

Yes. CBSE Class 12 Computer Science Question Paper 2019 Solutions can be viewed online and downloaded as a PDF free of cost on AglaSem Docs.

How many pages does CBSE Class 12 Computer Science Question Paper 2019 Solutions have?

CBSE Class 12 Computer Science Question Paper 2019 Solutions contains 45 pages, which you can read online or download together as a single PDF.

Where can I find more Class 12 study material?

You can find more Class 12 question papers, sample papers, syllabus, and answer keys on AglaSem Docs.

CBSE Class 12 Computer Science Question Paper 2019 Solutions – Text

Read the full text of this solution below — useful to quickly search, copy and reference the content online without downloading the PDF.

📄 View text version (45 pages)

Page 1

Strictly Confidential: (For Internal and Restricted use only)
Senior School Certificate Examination
March 2019
Marking Scheme – Computer Science (SUBJECT CODE 083)
(SERIES: ​BVM​ PAPER CODE – 91​)

General Instructions:
1. You are aware that evaluation is the most important process in the actual and correct
assessment of the candidates. A small mistake in evaluation may lead to serious problems
which may affect the future of the candidates, education system and the teaching
profession. To avoid mistakes, it is requested that before starting evaluation, you must
read and understand the spot evaluation guidelines carefully. Evaluation is a 10 -12 days
mission for all of us. Hence, it is necessary that you put in your best efforts in this
process.
2. Evaluation is to be done as per instructions provided in the Marking Scheme. It should not
be done according to one’s own interpretation or any other consideration. Marking
Scheme should be strictly adhered to and religiously followed. ​However, while
evaluating, answers which are based on the latest information or knowledge and/or
are innovative, they may be assessed for their correctness otherwise and marks be
awarded to them.
3. The Head-Examiner must go through the first five answer books evaluated by each
evaluator on the first day, to ensure that evaluation has been carried out as per the
instructions given in the Marking Scheme. The remaining answer books meant for
evaluation shall be given only after ensuring that there is no significant variation in the
marking of individual evaluators.
4. If a question has parts, please award marks on the right-hand side for each part. Marks
awarded for different parts of the question should then be totaled up and written in the
left-hand margin and encircled.
5. If a question does not have any parts, marks must be awarded in the left hand margin and
encircled.
6. If a student has attempted an extra question, answer of the question deserving more
marks should be retained and the other answer scored out.
7. No marks to be deducted for the cumulative effect of an error. It should be penalized only
once.
8. A full scale of marks 0 -70 has to be used. Please do not hesitate to award full marks if
the answer deserves it.
9. Every examiner has to necessarily do evaluation work for full working hours i.e. 8 hours
every day and evaluate 25 answer books per day.
10. Ensure that you do not make the following common types of errors committed by the
Examiner in the past:-
a. Leaving the answer or part thereof unassessed in an answer book.
b. Giving more marks for an answer than assigned to it.
c. Wrong transfer of marks from the inside pages of the answer book to the title page.
d. Wrong question wise totaling on the title page.
e. Wrong totaling of marks of the two columns on the title page.
f. Wrong grand total.
g. Marks in words and figures not tallying.
h. Wrong transfer of marks from the answer book to online award list.
i. Answers marked as correct, but marks not awarded. (Ensure that the right tick mark is
correctly and clearly indicated. It should merely be a line. Same is with the X for
incorrect answer.)
j. Half or a part of answer marked correct and the rest as wrong, but no marks awarded.

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #1/45]

Page 2

11. While evaluating the answer books if the answer is found to be totally incorrect, it should
be marked as (X) and awarded zero (0) Marks.
12. Any unassessed portion, non-carrying over of marks to the title page, or totaling error
detected by the candidate shall damage the prestige of all the personnel engaged in the
evaluation work as also of the Board. Hence, in order to uphold the prestige of all
concerned, it is again reiterated that the instructions be followed meticulously and
judiciously.
13. The Examiners should acquaint themselves with the guidelines given in the Guidelines for
spot Evaluation before starting the actual evaluation.
14. Every Examiner shall also ensure that all the answers are evaluated, marks carried over to
the title page, correctly totaled and written in figures and words.
15. The Board permits candidates to obtain a photocopy of the Answer Book on request in an
RTI application and also separately as a part of the re-evaluation process on payment of
the processing charges.
Specific Instructions:
● The answers given in the marking scheme are SUGGESTIVE. Examiners are
requested to award marks for all alternative correct Solutions/Answers conveying
a similar meaning
● All programming questions have to be answered with respect to C++ Language /
Python only
● In C++ / Python, ignore case sensitivity for identifiers (Variable / Functions /
Structures / Class Names)
● In Python indentation is mandatory, however, the number of spaces used for
indenting may vary
● In SQL related questions – both ways of text/character entries should be
acceptable for Example: “AMAR” and ‘amar’ both are acceptable.
● In SQL related questions – all date entries should be acceptable for Example:
‘YYYY-MM-DD’, ‘YY-MM-DD’, ‘DD-Mon-YY’, “DD/MM/YY”, ‘DD/MM/YY’,
“MM/DD/YY”, ‘MM/DD/YY’ and {MM/DD/YY} are correct.
● In SQL related questions – semicolon should be ignored for terminating the SQL
statements
● In SQL related questions, ignore case sensitivity.
SECTION A - (Only for candidates, who opted for C++)
1 (a) Write the names of any four fundamental data types of C++ . 2

Ans char, int, float, double, void (Any 4)

(½ Mark each for correctly naming a fundamental data type)

(b) Write the names of the correct header files, which must be included in the 1
following C++ code to compile the code successfully:
void main()
{
char L[]="CS 2018";
int N=strlen(L);
cout<< L[N-1];
}

Ans string.h

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #2/45]

Page 3

iostream.h or iomanip.h or fstream.h

(½ Mark for writing each correct answer)
NOTE: Any additional header file to be ignored

(c) Rewrite the following ​C++ program​ after removing any/all syntactical error(s). 2
Note: Assume all required header files are already included in the program.

#define Area(L,B) = L*B
structure Recta
{
int Length, Breadth;
};
void main()
{
Recta R = [10,15];
cout<<Area(Length.R,Breadth.R);
}

Ans #define Area(L,B)​ L*B​ //​Error 1
struct​ Recta //​Error 2
{
int Length, Breadth;
};
void main()
{
Recta R = ​{10,15}​; //​Error 3
cout<<Area(​R.Length,R.Breadth​); //​Error 4
}

(½ Mark for correcting each Error and rewriting the statement correctly)
NOTE:
(1 Mark for correctly identifying all the four errors)
(Ignore any other error pointed out)

(d) Find and write the output of the following C++ program code: 2
Note: Assume all required header files are already included in the program.
void Alter(char *S1, char *S2)
{
char *T;
T=S1;
S1=S2;
S2=T;
cout<<S1<<"&"<<S2<<endl;
}
void main()
{

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #3/45]

Page 4

char X[]="First", Y[]="Second";
Alter(X,Y);
cout<<X<<"*"<<Y<<endl;
}

Ans Second&First
First*Second

(1 mark for each correct line of output)
OR
(½ Mark for writing partially correct value in accordance of the order)
OR
(Only ½ Mark for writing ‘&​ ​’ and ‘*’ at proper places)
Note:
● Deduct only ½ Mark for not considering any or all correct
​ ​ and *
placements of &
● Deduct only ½ Mark for not considering any or all line break

(e) Find and write the output of the following C++ program code: 3
Note: Assume all required header files are already included in the program.
void Convert(float &X, int Y=2)
{
X=X/Y;
Y=X+Y;
cout<<X<<"*"<<Y<<endl;
}
void main()
{
float M=15, N=5;
Convert(M,N);
Convert(N);
Convert(M);
}

Ans 3*8
2.5*4
1.5*3

(1 mark for each correct line of output)
OR
(½ Mark for writing partially correct value in accordance of the order)
Only ½ Mark for writing all ‘*’ at proper places)
Note:
● Deduct only ½ Mark for not considering any or all correct
placements of *
● Deduct only ½ Mark for not considering any or all line break
● Deduct only ½ mark for ignoring .5 in any or all lines

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #4/45]

Page 5

● Writing 3.0 in the first line acceptable as correct answer

(f) Observe the following C++ code and find the possible output(s) from the options (i) 2
to (iv) following it. Also, write the minimum and maximum values that can possibly
be assigned to the variable ​End​.
Note:
● Assume all the required header files are already being included in the code.
● The function random(N) generates any possible integer between 0 and N-1
(both values included)
void main()
{
randomize();
int A[]={10,20,30,40,50,60,70,80};
int Start = random(2) + 1;
int End = Start + random(4);
for(int I=Start; I<=End , I++)
cout<<A[I]<<"$";
}

(i) ​10$20$30$ (ii) ​20$30$40$50$60$
(iii) ​30$40$50$60$ (iv) ​40$50$60$70$

Ans (iii) 30$40$50$60$
Minimum value = 1
Maximum value = 5

Part 1:
(1 Mark for writing only the correct option)
OR
(1 Mark for identifying wrong syntax of for in the code)

Part 2:
(½ Mark for writing correct Minimum value of End)
(½ Mark for writing correct Maximum value of End)

2. (a) Given the following class Test and assuming all necessary header file(s) included,
answer the questions that follow the code:
class Test
{
int Marks; char TName[20];
public:
Test (int M) //Function 1
{
Marks = M;
}
Test (char S[]) //Function 2
{

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #5/45]

Page 6

strcpy(TName,S);
}
Test (char S[], int M) //Function 3
{
Marks = M;
strcpy(TName,S);
}
Test (Test &T) //Function 4
{
Marks = T.Marks + 10;
strcpy(TName,T.TName);
}
};
void main()
{
Test T1(10); //Statement I
Test T2(70); //Statement II
Test T3(30, "PRACTICAL"); //Statement III
______________________ ; //Statement IV
}

(i) Which of the statement(s) out of (I), (II), (III), (IV) is/are incorrect for object(s) of 1
the class Test?

Ans Statement III is incorrect
OR
Statement III and IV are incorrect

(1 mark for writing correct option)
(½ mark for only writing Statement IV is incorrect)

(ii) What is Function 4 known as ? Write the ​Statement IV, that would execute 1
Function 4.

Ans ● Copy Constructor

● Test T4=T1; OR Test T4(T1);
OR
Test T4=T2; OR Test T4(T2);
OR
Test T4=T3; OR Test T4(T3);

(½ mark for each correct answer)
Note: Any object name can be used in place of T4

(b) Observe the following C++ code and answer the questions (i) and (ii).
Note: Assume all necessary files are included.
class Point
{
int X,Y;
public:

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #6/45]

Page 7

Point(int I=10, int J=20) //Function 1
{
X = J;
Y = I;
}
void Show() //Function 2
{
cout<<"Points are "<<X<<" & "<<Y<<endl;
}
~Point() //Function 3
{
cout<<"Points Erased "<<endl;
}
};

void main()
{
Point P(5);
P.Show();
}

(i) For the class Point, what is ​Function 3​ known as ? When is it executed ? 1

Ans ● Destructor
● When the object goes out of scope OR mention of correct }

(½ Mark for each correct answer)

(ii) What is the output of the above code, on execution ? 1

Ans Points are 20 & 5
Points Erased
(½ Mark for each correct line of output)
Note: No marks to be deducted for ignoring &

OR
(b) Explain Polymorphism in context of Object Oriented Programming. Also give a 2
supporting example in C++.

Ans When two or more functions have the same name with different signature ,
they are said to be overloaded.
OR
The ability of a message to be expressed in different forms.
Example:
void area(float r)
{
cout<< 3.14*r*r;
}
[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #7/45]

Page 8

void area(int l,int b)
{
cout<< l * b;
}
void main()
{ area(3.5);
area(10,20);
}
​OR
void area(float a);
void area(int a, int b);
(1 mark for explaining Polymorphism correctly)
(1 mark for writing correct supporting example)
OR
(2 Marks for illustrating the concept of Polymorphism with the help of
appropriate example)

(c) Write the definition of a class ​GRAPH​ in C++ with following description: 4
Private Members
● XUnit // integer
● YUnit // integer
● Type // char array of size 20
● AssignType()/* Member function to assign value of
Type based upon XUnit and YUnit as
follows: */
Condition Type
XUnit = 0 Or YUnit = 0 None
XUnit is more than YUnit Bar
XUnit is less than or equal Line
to YUnit

Public Members
● InXY() /* Function to allow user to enter values
of XUnit and YUnit and then invoke
AssignType() to assign value of Type */

● OutXY() //Function to display XUnit, YUnit and Type

Ans class GRAPH
{
int XUnit, YUnit;
char Type[20];
void AssignType();
public :
void InXY();
void OutXY();
};

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #8/45]

Page 9

void GRAPH::AssignType()
{
if (XUnit==0||YUnit==0)
strcpy(Type,"None");
else if (XUnit>YUnit)
strcpy (Type,"Bar");
else if (XUnit<= YUnit) // OR only else
strcpy(Type,"Line");
}
void GRAPH::InXY()
{
cin>>XUnit>>YUnit;
AssignType();
}
void GRAPH::OutXY()
{
cout<<XUnit<<YUnit<<Type<<endl;
}

(½ Mark for declaring class header correctly)
(½ Mark for declaring data members correctly)
(1 Mark for defining AssignType() correctly)
(½ Mark for taking inputs of XUnit and YUnit in InXY() )
(½ Mark for invoking AssignType() inside InXY())
(½ Mark for defining OutXY() correctly)
(½ Mark for correctly closing class declaration with a semicolon ; )
NOTE:
● Marks to be awarded for defining the member functions inside or
outside the class

(d) Answer the questions (i) to (iv) based on the following: 4
class Ground
{
int Rooms;
protected:
void Put();
public:
void Get();
};
class Middle : private Ground
{
int Labs;
public:
void Take();
void Give();
};
class Top : public Middle
{
int Roof;

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #9/45]

Page 10

public:
void In();
void Out();
};
void main()
{
Top T;
}
(i) Which type of Inheritance out of the following is illustrated in the above example?
− Single Level Inheritance, Multilevel Inheritance, Multiple Inheritance
Ans (i) Multilevel Inheritance

(1 Mark for writing correct option)

(ii) Write the names of ​all the members​, which are directly accessible by the member
function ​Give() ​of class ​Middle​.
Ans Data Members : Labs
Member Functions : Put(), Get(), Take(),
Give() - optional
(1 Mark for writing all correct member names )
NOTE:
● Marks not to be awarded for partially correct answer
● Separate specification as Data Members/Member Functions is optional
(iii) Write the names of ​all the members​, which are directly accessible by the member
function ​Out()​ of class ​Top​.
Ans Data Members : Roof
Member Functions : Take(), Give(), In(),
Out() - Optional
(1 Mark for writing all correct member names )
NOTE:
● Marks not to be awarded for partially correct answer
● Separate specification as Data Members/Member Functions is optional
(iv) Write the names of ​all the members​, which are directly accessible by the object ​T
of class ​Top​ declared in the ​main()​ function.
Ans Take(), Give(), In() , Out()

(1 Mark for writing all correct members )
NOTE:
Marks not to be awarded for partially correct answers.​

OR
(d) Consider the following class HeadQuarter 4
class HeadQuarter
{

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #10/45]

Page 11

int Code;
char Des[20];
protected:
char Address[40];
public:
void Get(){cin>>Code;gets(Des);gets(Address);}
void Put(){cout<<Code<<Des<<Address<<endl;}
};
Write a code in C++ to protectedly derive another class FrontOffice from the base
class HeadQuarter with following members.
Data Members
Location of type character of size 10
Budget of type double
Member Functions
A constructor function to assign Budget as 100000
Assign() to allow user to enter Location and Budget
Display() to display Location and Budget
Ans class FrontOffice : protected HeadQuarter
{
char Location[10];
double Budget;
public:
FrontOffice()
{
Budget= 100000;
}
void Assign()
{
gets(Location);
cin>>Budget;
}
void Display()
{
cout<< Location <<Budget<<endl;
}
};
​ lass FrontOffice​)
(½ Mark for declaring c
(½ mark for inheriting using ​:)
(½ ​Mark for ​protected HeadQuarter​)
(½ Mark for declaring data members correctly)
(1 Mark for defining constructor FrontOffice()​ c​ orrectly)
(½ Mark for defining Assign() correctly)
(½ Mark for defining Display() correctly)
3 (a) Write a user-defined function NoTwoThree(int Arr[], int N) ​in C++, which should 3
display the value of all such elements and their corresponding locations in the array
Arr (i.e the array index), which are ​not multiples of 2 or 3. N ​represents the total
number of elements in the array ​Arr,​ to be checked.
Example: if the array Arr contains

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #11/45]

Page 12

0 1 2 3 4
25 8 12 49 9
Then the function should display the output as:
25 at location 0
49 at location 3
Ans void NoTwoThree(int Arr[],int N)
{
for(int i=0;i<N;i++)
if ((Arr[i]%2!=0) && (Arr[i]%3!=0))
cout<<Arr[i]<<" at location "<<i<<endl;
}
OR
void NoTwoThree(int Arr[],int N)
{
for(int i=0;i<N;i++)
if ((Arr[i]%2) && (Arr[i]%3))
cout<<Arr[i]<<" at location "<<endl;
}
(½ Mark for correctly writing the loop)
(½ Mark for checking divisibility by 2)
(½ Mark for checking divisibility by 3)
(½ Mark for using &​ &​ operator between divisibility check)
(½ Mark for displaying the element)
(½ Mark for displaying the location)
OR
(Full 3 Marks for writing any correct code giving the same result)
OR
(a) Write a user-defined function ​ReArrange(int Arr[], int N) in C++, 3
which should swap the contents of the first half locations of the array ​Arr with the
contents of the second half locations. ​N (which is an even integer) represents the
total number of elements in the array ​Arr​.
Example:
If the array ​Arr​ contains the following elements (for N
​ = 6​)
0 1 2 3 4 5
12 5 7 23 8 10

Then the function should rearrange the array to become
0 1 2 3 4 5
23 8 10 12 5 7
NOTE:
● DO NOT DISPLAY​ the Changed Array contents
● Do not use any other array to transfer the contents of array Arr.
Ans void ReArrange(int Arr[],int N)
{

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #12/45]

Page 13

for(int i=0;i<N/2;i++)
{
int t=Arr[i];
Arr[i]=Arr[N/2+i];
Arr[N/2+i]=t;
}
}
(½ Mark for initialisation, ½ Mark for correct condition, ½ Mark for
change in value of variable of the loop as part of a loop)
(1 ½ Mark for swapping elements - ½ mark for each sub-step)
OR
(Full 3 Marks for writing a code giving the same result)
(b) Write definition for a function ​XOXO(char M[4][4]) in C++, which replaces 2
every occurrence of an ​X​ with an ​O​ in the array, and vice versa.
For example:
ORIGINAL ARRAY M CHANGED ARRAY M
X X O X O O X O
O X O O X O X X
O O X X X X O O
X X O O O O X X

NOTE:
● DO NOT DISPLAY​ the Changed Array contents
● Do not use any other array to transfer the contents of array M.
Ans void XOXO(char M[4][4])
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if (M[i][j]=='X')
M[i][j]='O';
else if (M[i][j]=='O')
M[i][j]='X';
}
(½ Mark for correctly writing loop for traversing rows)
(½ Mark for correctly writing loop for traversing columns in each row)
(½ Mark for correctly replacing array element to ‘X’)
(½ Mark for correctly replacing array element to ‘O’)
OR
(Full 2 Marks for writing a code giving the same result)
OR
(b) Write definition for a function ​ColSwap(int A[4][4]) in C++, which 2
swaps the contents of the first column with the contents of the third column.

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #13/45]

Page 14

For example:
ORIGINAL ARRAY A CHANGED ARRAY A
10 15 20 25 20 15 10 25
30 35 40 45 40 35 30 45
50 55 60 65 60 55 50 65
70 75 80 85 80 75 70 85

NOTE:
● DO NOT DISPLAY​ the Changed Array contents
● Do not use any other array to transfer the contents of array A.
Ans void ColSwap(int A[4][4])
{
for(int i=0;i<4;i++)
{
int Temp= A[i][0];
A[i][0]=A[i][2];
A[i][2]=Temp;
}
}
(½ Mark for correctly writing loop)
(1 ½ Mark for swapping elements - ½ mark for each sub-step)
OR
(Full 2 Marks for writing a code giving the same result)
(c) Let us assume P[20][10] is a two dimensional array, which is stored in the memory 3
along the row with each of its elements occupying 2 bytes, find the address of the
element P[10][5], if the address of the element P[5][2] is 25000.
Ans LOC(P[10][5]) = LOC(P[5][2]) +2(10*(10-5)+(5-2))
= 25000 + 2(50 + 3)
= 25000 + 2(53)
= 25000 + 106
= 25106
OR
LOC(P[I][J]) = Base(P)+W*(NC*(I-LBR)+(J-LBC))
Assuming LBR=0, LBC=0
LOC(P[5][2]) = Base(P)+2*(10*5+2)
25000 = Base(P)+2*(50+2)
Base(P) = 25000 - 2*(52)
Base(P) = 25000 - 104
Base(P) = 24896

LOC(P[10][5])= 24896 + 2*(10*10+5)
= 24896 + 2*(105)
= 24896 + 210
= 25106
(1 Mark for writing correct formula (for Row major) OR substituting formula
with correct values)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #14/45]

Page 15

(1 Mark for correct step calculations - at least one step of calculation)
(1 Mark for final correct address)

NOTE:
Marks to be awarded for calculating the address assuming LBR and LBC = 1
OR
(c) Let us assume P[20][30] is a two dimensional array, which is stored in the memory 3
along the column with each of its elements occupying 2 bytes. Find the address of
the element P[5][6], if the base address of the array is 25000.
Ans LOC(P[I][J]) = Base(P)+W*((I-LBR)+NR*(J-LBC))
Assuming LBR=0, LBC=0
LOC(P[5][6]) = Base(P)+2*(5+20*6)
= 25000+2*(5+120)
= 25000 + 2*(125)
= 25000 + 250
= 25250
(1 Mark for writing correct formula (for Column major) OR substituting formula
with correct values)
(1 Mark for correct step calculations - at least one step of calculation)
(1 Mark for final correct address)
NOTE:
Marks to be awarded for calculating the address assuming LBR and LBC = 1
(d) Write a user-defined function ​Pop(Book B[], int &T)​, which pops the 4
details of a Book, from the static stack of Book B, at the location T (representing
the Top end of the stack), where every Book of the stack is represented by the
following structure:
struct Book
{
int Bno;
char Bname[20];
};
Ans void Pop(Book B[],int &T)
{
if(T!=-1) // OR if (T>=0) OR if (T>-1)
{
cout<<B[T].Bno<<B[T].Bname<<endl;
T--; // --T;
}
else
cout<<"Stack Empty";
}
OR
void Pop(Book B[],int &T)
{
if(T==-1) // OR if (T<0)
cout<<"Stack Empty";
[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #15/45]

Page 16

else
{
cout<<B[T].Bno<<B[T].Bname<<endl;
T--; // --T;
}
}
OR
void Pop(Book B[],int &T)
{
if(T==0)
cout<<"Stack Empty";
else
{
T--; // --T;
cout<<B[T].Bno<<B[T].Bname<<endl;
}
}
(1 ½ Mark for checking EMPTY/NOT EMPTY condition)
(1 Mark for displaying/returning the content of Top element)
(1 ½ Mark for decrementing in the value of T or Top)
OR
(Full 4 Marks for writing a code giving the same result)
OR
(d) For the following structure of Books in C++ 4
struct Book
{
int Bno;
char Bname[20];
Book *Link;
};
Given that the following declaration of class BookStack in C++ represents a dynamic
stack of Books:
class BookStack
{
Book *Top; ​//Pointer with address of Topmost Book of
Stack
public:
BookStack()
{
Top = NULL;
}
void Push(); ​//Function to push a Book into the dynamic
stack
void Pop(); ​ ​//Function to pop a Book from the dynamic
stack
~BookStack();
};

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #16/45]

Page 17

Write the definition for the member function void BookStack::Push(), that pushes
the details of a Book into the dynamic stack of BookStack.
Ans void BookStack::Push()
{
Book *T = new Book;
cin>>T->Bno;
gets(T->Bname);
T->Link = Top;
Top= T;
}
(1 Mark for declaring and initialising T (Temporary Node) using new)
(1 Mark for allowing user to enter Bno and Bname of T)
(1 Mark for linking the T link pointer correctly with Top)
(1 Mark for assigning Top to T)
(e) Evaluate the following Postfix expression, showing the stack contents: 2
250,45,9,/,5,+,20,*,-
Ans
Element Stack Contents
250 250
45 250, 45
9 250, 45, 9
/ 250, 5
5 250, 5, 5
+ 250, 10
20 250, 10, 20
* 250, 200
- 50

Answer = 50

OR
Any other method for evaluating the given postfix expression showing the status
of Stack.
( ½ Mark for correctly evaluating expression up to each operator)
OR
( 1 Mark only to be given for writing correct answer without showing the Stack
Status)
OR
(e) Convert the following Infix expression to its equivalent Postfix expression, showing 2
the stack contents for each step of conversion:
A + B * C ^ D - E

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #17/45]

Page 18

Ans ((A + (B * (C ^ D))) - E)
INFIX STACK POSTFIX
(
(
A A
+ + A
(
B + AB
* +* AB
( +* AB
C +* ABC
^ +*^ ABC
D +*^ ABCD
) +* ABCD^
) + ABCD^*
) ABCD^*+
- - ABCD^*+
E - ABCD^*+E
) ABCD^*+E-
OR
A + B * C ^ D - E
INFIX STACK POSTFIX
A A
+ + A
B + AB
* +* AB
C +* ABC
^ +*^ ABC
D +*^ ABCD
- - ABCD^*+
E - ABCD^*+E
ABCD^*+E-
OR
Any other method for converting the given ​infix​​ expression to its equivalent ​postfix
expression showing stack contents.
(½ Mark for conversion upto each operator illustrating through stack)
OR
(1 Mark for only the final answer as ​ABCD^*+E-​)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #18/45]

Page 19

4. (a) A text file named ​MESSAGE.TXT contains some text. Another text file named 3
SMS.TXT needs to be created such that it would store ​only the first 150
characters​ from the file ​MESSAGE.TXT​.

Write a user-defined function ​LongToShort() in C++ that would perform the
above task of creating ​SMS.TXT ​from the already existing file ​MESSAGE.TXT​.
Ans void LongToShort()
{
ifstream f1("MESSAGE.TXT");
ofstream f2("SMS.TXT");
int i=0;
char ch;
while(!f1.eof())
{
f1.get(ch);
i++;
if(i<=150)
f2<<ch;
}
f1.close();
f2.close();
}
OR
void LongToShort()
{
ifstream f1("MESSAGE.TXT");
ofstream f2("SMS.TXT");
char ch;
for(int i=1;i<=150;i++)
{
f1.get(ch);
f2.put(ch);
}
f1.close();
f2.close();
}

OR
void LongToShort()
{
ifstream f1("MESSAGE.TXT");
ofstream f2("SMS.TXT");
char s[200]; //Any array size >=150 acceptable
f1.getline(s,151); // f1.getline(s,150);
f2<<s<<endl;
f1.close(); f2.close();
}

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #19/45]

Page 20

​ MS.TXT ​correctly)
(½ Mark for opening S
(½ Mark for opening M​ ESSAGE.TXT ​correctly)
(1 Mark for reading each character /line (​ using any method)​ from the
file)
(½ Mark for extracting 150 characters from MESSAGE.TXT)
(½ Mark for transferring the contents to the file SMS.TXT )
OR
(a) A text file named ​CONTENTS.TXT contains some text. Write a user-defined 3
function LongWords() in C++ which displays all such words of the file whose length
is more than 9 alphabets. For example: if the file ​CONTENTS.TXT​ contains:
"Conditional statements of C++ programming language are
if and switch"
Then the function LongWords() should display the output as:
Conditional
statements
programming
Ans void LongWords()
{
ifstream f("CONTENTS.TXT");
char ch[20];
while(!f.eof())
{
f>>ch;
if(strlen(ch)>9)// OR alphabet and length check
cout<<ch<<endl;
}
f.close();
}
OR
void LongWords()
{
ifstream f("CONTENTS.TXT");
char ch[20];
while(f>>ch)
{ if(strlen(ch)>9)// OR alphabet and length check
cout<<ch<<endl;
}
f.close();
}
OR
void LongWords()
{
fstream f("CONTENTS.TXT",ios::in);
char ch[20];
f>>ch;

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #20/45]

Page 21

while(!f.eof())
{
if(strlen(ch)>9) // OR alphabet and length check
cout<<ch<<endl;
f>>ch;
}
f.close();
}
(1 Mark for opening ​CONTENTS.TXT​ correctly)
(1 Mark for reading each word (​ using any method)​ from the file)
(½ Mark for checking the length of the word)
(½ Mark for correctly displaying the word)
(b) Write a user-defined function TotalPrice() in C++ to read each object of a binary file 2
STOCK.DAT, and display the Name from all such records whose Price is above 150.
Assume that the file STOCK.DAT is created with the help of objects of class Stock,
which is defined below:
class Stock
{
char Name[20]; float Price;
public:
char* RName() { return Name; }
float RPrice() { return Price; }
};
Ans void TotalPrice()
{
ifstream f("STOCK.DAT",ios::binary);
//OR fstream f("STOCK.DAT",ios::binary|ios::in);
//OR fstream f;f.open("STOCK.DAT",ios::binary|ios::in);
Stock S;
while(f.read((char*)&S,sizeof(S)))
if(S.RPrice()>150)
cout<<S.RName()<<endl;
f.close();
}
​ TOCK.DAT​ correctly)
(½ Mark for opening S
(½ Mark for reading each record​ from the file)
(½ Mark for checking price above 150)
(½ Mark for correctly displaying the name)
OR
(b) A binary file DOCTORS.DAT contains records stored as objects of the following class: 2
class Doctor
{
int DNo; char Name[20]; float Fees;
public:
int *GetNo() { return DNo; }

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #21/45]

Page 22

void Show()
{ cout<<DNo<<" * "<<Name<<" * "<<Fees<<endl;
};
Write definition for function ​Details(int N) ​in C++, which displays the details
of the Doctor from the file DOCTORS.DAT, whose DNo matches with the
parameter N passed to the function.
Ans void Details(int N)
{
ifstream f("DOCTORS.DAT",ios::binary);
//OR fstream f("DOCTORS.DAT",ios::binary|ios::in);
//OR fstream f;f.open("DOCTORS.DAT",ios::binary|ios::in);
Doctor D;
while(f.read((char*)&D,sizeof(D)))
if(D.GetNo()==N)
D.Show();
f.close();
}
​ OCTORS.DAT​ correctly)
(½ Mark for opening D
(1 Mark for reading each record​ from the file)
(½ Mark for correctly invoking the Show() to display the record)
NOTE: Full 2 marks if the error in return type has been explicitly
mentioned
(c) Find the output of the following C++ code considering that the binary file 1
STOCK.DAT exists on the hard disk with the following 5 records for the class STOCK
containing Name and Price.
Name Price
Rice 110
Wheat 60
Cheese 200
Pulses 170
Sauce 150
void main()
{ fstream File;
File.open("STOCK.DAT",ios::binary|ios::in);
Stock S;
for (int I=1; I<=2; I++)
{
File.seekg((2*I-1)*sizeof(S));
File.read((char*)&S, sizeof(S));
cout<<"Read : "<<File.tellg()/sizeof(S)<<endl;
}
File.close();
}
Ans Read : 2
Read : 4

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #22/45]

Page 23

(½ Mark for displaying correct value 2 in first line)
(½ Mark for displaying correct value 4 in second line)

Note: 1 mark to be given even if 2 and 4 are written
OR
(c) Differentiate between seekg() and tellg(). 1

Ans seekg(): This function takes the file get pointer to the specified byte in a
file.
Eg: f.seekg(30); // It takes a pointer to 30th byte.
tellg(): This function returns the position of the current get pointer in
terms of bytes in a file.
int n = f.tellg();
(½ Mark for writing usage of seekg())
(½ Mark for writing usage of tellg())
OR
(1 Mark for illustrating the concept of seekg() and tellg() with the help of
appropriate example)

SECTION B - [Only for candidates, who opted for Python]
1 (a) Write the names of any four data types available in Python. 2
Ans Numbers
Integer
Boolean
Floating Point
Complex
None
Sequences
Strings
Tuple
List
Sets
Mappings
Dictionary
( ½ mark each for writing correct data types)
(b) Name the Python Library modules which need to be imported to invoke the following 1
functions
(i) sqrt()
(ii) start​()
Ans (i) math
(ii) re
(½ Mark for writing each correct Library module)
Note: Ignore any other Library modules, if mentioned.

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #23/45]

Page 24

(c) Rewrite the following code in python after removing all syntax error(s). Underline 2
each correction done in the code.
250 = Number
WHILE Number<=1000:
if Number=>750:
print Number
Number=Number+100
else
print Number*2
Number=Number+50
Ans Number = 250
while​ Number<=1000:
if Number​>=​750:
print Number
Number = Number+100
else:
print Number*2
Number = Number+50
(½ Mark for each correction, not exceeding 2 Marks)
OR
(1 mark for identifying the errors, without suggesting corrections)
(d) Find and write the output of the following python code: 2

Msg1="WeLcOME"
Msg2="GUeSTs"
Msg3=""
for I in range(0,len(Msg2)+1):
if Msg1[I]>="A" and Msg1[I]<="M":
Msg3=Msg3+Msg1[I]
elif Msg1[I]>="N" and Msg1[I]<="Z":
Msg3=Msg3+Msg2[I]
else:
Msg3=Msg3+"*"
print Msg3
Ans G*L*TME
( 1 Mark for characters - ½ for G and L , ½ for TME )
(½ Mark for each * at proper places )
(e) Find and write the output of the following python code: 3

def Changer(P,Q=10):
P=P/Q
Q=P%Q
print P,"#",Q
return P
[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #24/45]

Page 25

A=200
B=20
A=Changer(A,B)
print A,"$",B
B=Changer(B)
print A,"$",B
A=Changer(A)
print A,"$",B
Ans 10 # 10
10 $ 20
2 # 2
10 $ 2
1 # 1
1 $ 2

( ½ mark for each correct line of output)

Note:
● Deduct ½ Mark for not writing any or all '#' OR '$' symbol(s)
● Deduct ½ Mark for not considering any or all line breaks at proper
place(s)
(f) What possible outputs(s) are expected to be displayed on screen at the time of 2
execution of the program from the following code? Also specify the minimum values
that can be assigned to each of the variables BEGIN and LAST.
import random

VALUES=[10,20,30,40,50,60,70,80];
BEGIN=random.randint(1,3)
LAST =random.randint(BEGIN,4)

for I in range(BEGIN,LAST+1):
print VALUES[I],"-",

(i) ​30 - 40 - 50 - (ii) ​10 - 20 - 30 - 40 -

(iii) ​30 - 40 - 50 - 60 - (iv) ​30 - 40 - 50 - 60 - 70 -

Ans (i) ​30-40-50-

Minimum value for BEGIN:1
Minimum value for LAST:1
(1 Mark for writing the correct options)

NOTE: No marks to be awarded for writing any other option

(½ Mark for writing correct Minimum value of BEGIN)
(½ Mark for writing correct Minimum value of LAST)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #25/45]

Page 26

2 (a) Write four features of object oriented programming. 2

Ans Encapsulation​: combining of data and the functions associated with that
data in a single unit
DataHiding​: the mechanism of hiding the data of a class from the outside
world
Abstraction​: providing only essential information to the outside world and
hiding their background details
Inheritance​: forming a new class (derived class) from an existing class
(called the base class).
Polymorphism​: ability to use an operator or function in various forms.

NOTE: ​Any four from the above
(½ mark each for writing every correct OOP feature)

(b) class Box: #Line 1 2
L = 10 #Line 2
Type="HARD" #Line 3
def __init__(self,T,TL=30): #Line 4
self.Type = T #Line 5
self.L = TL #Line 6
def Disp(self): #Line 7
print self.Type,Box.Type #Line 8
print self.L,Box.L #Line 9
B1=Box("SOFT",20) #Line 10
B1.Disp() #Line 11
Box.Type="FLEXI" #Line 12
B2=Box("HARD") #Line 13
B2.Disp() #Line 14
Write the output of the above Python code.

Ans SOFT HARD
20 10
HARD FLEXI
30 10
(½ for writing each correct line of output)

Note: Deduct ½ Mark if end of lines not considered

OR
(b) class Target: #Line 1 2
def __init__(self): #Line 2
self.X = 20 #Line 3
self.Y = 24 #Line 4

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #26/45]

Page 27

def Disp(self): #Line 5
print self.X,self.Y #Line 6
def __del__(self): #Line 7
print "Target Moved" #Line 8
def One(): #Line 9
T=Target() #Line 10
T.Disp() #Line 11
One() #Line 12
(i) What are Methods/functions mentioned in Line 2 and Line 7 specifically known as?

Ans Line 2 – Constructor
Line 7 – Destructor
( ½ Mark for correct name of Line 2 method )
( ½ Mark for correct name of Line 7 method )
(ii) Mention the line number of the statement, which will call and execute the
method/function shown in Line 2.
Ans Line 10

( 1 Mark for writing the correct line number 10 )

(c) Define a class HOUSE in Python with following specifications: 4

Instance Attributes
- Hno # House Number
- Nor # Number of Rooms
- Type # Type of the House
Methods/function
- AssignType() ​# ​To assign Type of House
# based on Number of Rooms as follows:
Nor Type

<=2 LIG

==3 MIG

>3 HIG

- Enter() # To allow user to enter value of
# Hno and Nor. Also, this method should
# call AssignType() to assign Type
- Display() # To display Hno, Nor and Type
Ans class HOUSE: # class HOUSE( ): / class HOUSE(Object):
def __init__(self): # def __init__(self,A,B,C):
self.Hno=0 # self.Hno=A
self.Nor=0 # self.Nor=B
self.Type="" # self.Type=C

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #27/45]

Page 28

def AssignType(self):
if self.Nor <= 2:
self.Type="LIG"
elif self.Nor ==3:
self.Type="MIG"
else:
self.Type="HIG"
def Enter(self):
self.Hno = input("Enter House Number")
self.Nor = input("Enter Number of rooms")
self.AssignType() # OR AssignType(self)
def Display(self):
print self.Hno
print self.Nor
print self.Type
(½ Mark for correct syntax for class header)
(½ Mark for correct declaration of instance attributes)
(1 Mark for correct definition of AssignType() function)
(1 Mark for correct definition of Enter() with proper invocation of
AssignType( ))
(1 Mark for correct definition of Display())

NOTE:
Deduct ½ Mark if AssignType() is not invoked properly inside Enter()
function
(d) Answer the questions (i) to (iii) based on the following:
class Furniture(object): #Line 1
def __init__(self,Q): #Line 2
self.Qty = Q
def GetMore(self,TQ): #Line 3
self.Qty =self.Qty+TQ
def FRDisp(self): #Line 4
print self.Qty
class Fixture(object): #Line 5
def __init__(self,TQ): #Line 6
self.Qty=TQ
def GetMore(self,TQ): #Line 7
self.Qty =self.Qty+TQ
def FXDisp(self): #Line 8
print self.Qty
class Flat(Furniture,Fixture): #Line 9
def __init__(self,fno): #Line 10
self.Fno=fno
Q=0
if self.Fno<100:
Q=10

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #28/45]

Page 29

else:
Q=20
Furniture.__init__(self,Q):#Line 11
Fixture.__init__(self,Q): #Line 12
def More(self,Q): #Line 13
Furniture.GetMore(self,Q)
Fixture.GetMore(self,Q)

def FLDisp(self): #Line 14
print self.Fno,
Furniture.FRDisp(self)
Fixture.FXDisp(self)
FL=Flat(101) #Line 15
FL.More(2)
FL.FLDisp()
(i) Write the type of the inheritance illustrated in the above. 1

Ans Multiple Inheritance
(1 Mark for writing correct Inheritance type)

(ii) Find and write the output of the above code. 2

Ans 101 24
24
(½ Mark for writing each correct value of first line of output)
(1 Mark for writing correct value of second line of output)

Note: Deduct ½ Mark if end of lines not considered
(iii) What is the difference between the statements shown in Line 11 and Line 12 ? 1

Ans Line 11 calls the constructor of the parent class Furniture
Line 12 calls the constructor of the parent class Fixture
( ½ mark for each correct answer)

OR
(d) Define inheritance. Show brief python examples of Single Level, Multiple and 4
Multilevel Inheritance.
Ans The capability of one class to inherit the data and functions of another class is
called as Inheritance. The class which inherits is called the child/ derived/ sub
class and the class from which it inherits is called the Parent/ base/ super class.

Example of Single level Inheritance
class A:
pass
class B(A):
[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #29/45]

Page 30

pass

Example of Multiple Inheritance
class A:
pass
class B:
pass
class C(A,B):
pass

Example of Multilevel Inheritance
class A:
pass
class B(A):
pass
class C(B):
pass

(1 mark for definition of Inheritance. 1 mark each for correct examples of
Single, Multiple and Multilevel Inheritance)
3 (a) Consider the following randomly ordered numbers stored in a list 3
106, 104, 106, 102, 105, 10

Show the content of list after the First, Second and Third pass of the selection sort
method used for arranging in ​ascending order​.

Note: Show the status of all the elements after each pass very clearly encircling the
changes.
Ans

(1 mark for each correct pass)
OR
(2½ Marks to be awarded for all the correct passes without encircling)
OR
(a) Consider the following randomly ordered numbers stored in a list 3
106, 104, 106, 102, 105, 107

Show the content of list after the First, Second and Third pass of the bubble sort
method used for arranging in ​descending order​.

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #30/45]

Page 31

Note: Show the status of all the elements after each pass very clearly encircling the
changes.
Ans

(1 mark for each correct pass)
OR
(2½ Marks to be awarded for all the correct passes without encircling)
(b) Write definition of a method/function ​AddOddEven(VALUES) to display sum of odd 3
and even values separately from the list of VALUES.

For example,
If the VALUES contain ​[15,26,37,10,22,13]
The function should display
Even Sum: 58
Odd Sum: 65
Ans def AddOddEven(VALUES):
so=0
se=0
for i in VALUES:
if i%2==0:
se=se+i
else:
so=so+i
print "Even Sum:",se
print "Odd Sum:",so

OR
def AddOddEven(VALUES):
so=0
se=0
for i in range(6): # range(0,6):
if VALUES[i]%2==0:
se=se+VALUES[i]
else:
so=so+VALUES[i]
print "Even Sum:",se
print "Odd Sum:",so

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #31/45]

Page 32

( ½ mark for function header)
(½ mark for initializing so (sum odd) and se (sum even) with 0)
( ½ mark for reading each element of the list using a loop)
( ½ mark for checking whether the value is odd/even)
( ½ mark for adding it to the sum )
( ½ mark for printing or returning the value)
OR
(b) Write definition of a method/function ​HowMany(ID,Val) to count and display 3
number of times the value of Val is present in the list ID.

For example,
If the ID contains ​[115,122,137,110,122,113]​ and Val contains 1
​ 22
The function should display
122 found 2 Times
Ans def HowMany(ID,Val):
c=0
for i in ID:
if i==Val:
c=c+1
print Val,"found",c,"Times"
( ½ mark for function header)
(½ mark for initializing c (count) with 0)
( ½ mark for reading each element of the list using a loop)
( ½ mark for checking whether i is equal to the Val)
( ½ mark for increasing the value of c )
( ½ mark for printing or returning the value)
(c) Write ​QueueUp(Client) and ​QueueDel(Client) methods/function Python to add a 4
new Client and delete a Client from a List of Clients names, considering them to act
as insert and delete operations of the Queue data structure.
Ans
def QueueUp(queue):
a=input("enter client name: ")
queue.append(a)
def QueueDel(queue):
if (queue==[]):
print "Queue empty"
else:
print "Deleted element is: ",queue[0]
del queue[0]

OR
class queue:
Client=[]
def QueueUp(self):
a=input("enter client name: ")
queue.Client.append(a)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #32/45]

Page 33

def QueueDel(self):
if (queue.Client==[]):
print "Queue empty"
else:
print "Deleted element is: ",queue.Client[0]
del queue.Client[0]
( ½ mark for QueueUp() header)
( ½ mark for accepting a value from user)
( ½ mark for adding value in list)
( ½ mark for QueueDel header)
( ½ mark for checking empty list condition)
( ½ mark for displaying “Queue empty”)
( ½ mark for displaying the value to be deleted)
( ½ mark for deleting value from list)
OR
(c) Write ​PushOn(Book) and ​Pop(Book) methods/functions in Python to add a new Book 4
and delete a Book from a List of Book titles, considering them to act as push and
pop operations of the Stack data structure.
Ans def PushOn(Book):
a=input("enter book title : ")
Book.append(a)
def Pop(Book):
if (Book==[]):
print "Stack empty"
else:
print "Deleted element:",Book.pop()
OR

class Stack:
Book=[]
def PushOn(self):
a=input("enter book title : ")
Stack.Book.append(a)
def Pop(self):
if (Stack.Book==[]):
print "Stack empty"
else:
print "Deleted element:",Stack.Book.pop()
( ½ mark for PushOn() header)
( ½ mark for accepting a value from user)
( ½ mark for adding value in list)
( ½ mark for Pop() header)
( ½ mark for checking empty list condition)
( ½ mark for displaying “Stack empty”)
( ½ mark for displaying the value to be deleted)
( ½ mark for deleting value from list)
(d) Write a python method/function ​Swapper(Numbers) to swap the first half of the 2

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #33/45]

Page 34

content of a list Numbers with second half of the content of list Numbers and
display the swapped values.

Note: Assuming that the list has even number of values in it

For Example:
If the list Numbers contain
[35,67,89,23,12,45]

After swapping the list content should be displayed as
[23,12,45,35,67,89]
Ans def Swapper(Numbers):
mid=len(Numbers)/2
for i in range(0,mid):
Numbers[i],Numbers[mid+i]=Numbers[mid+i],Numbers[i]
print Numbers

OR
def Swapper(Numbers):
mid=len(Numbers)/2
for i in range(0,mid):
T=Numbers[i]
Numbers[i]=Numbers[mid+i]
Numbers[mid+i]=T
print Numbers

( ½ mark for function header)
( ½ mark for loop)
( ½ mark for swapping values)
( ½ mark for displaying list)
OR
(d) Write a python method/function ​Count3and7(N) to find and display the count of all 2
those numbers which are between 1 and N, which are either divisible by 3 or by 7.

For Example:
If the value of N is ​15

The sum should be displayed as
7
(as 3,6,7,9,12,14,15 in between 1 to 15 are either divisible by 3 or 7)
Ans def Count3and7(N):
c=0
for i in range(1,N+1):
if i%3==0 or i%7==0:
c=c+1
print c
( ½ mark for function header)
( ½ mark for loop)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #34/45]

Page 35

( ½ mark for divisibility check and counting values)
( ½ mark for displaying list)

(e) Evaluate the following Postfix expression, showing the stack contents: 2
250,45,9,/,5,+,20,*,-
Ans
Element Stack Contents
250 250
45 250, 45
9 250, 45, 9
/ 250, 5
5 250, 5, 5
+ 250, 10
20 250, 10, 20
* 250, 200
- 50

Answer = 50

OR
Any other method for evaluating the given postfix expression showing the Stack
Status.
(½ Mark for evaluation till each operator)
OR
(1 Mark for only writing the correct answer without showing stack
status)

OR
(e) Convert the following Infix expression to its equivalent Postfix expression, showing 2
the stack contents for each step of conversion:
A + B * C ^ D - E

Ans ((A + (B * (C ^ D))) - E)
INFIX STACK POSTFIX
(
(
A A
+ + A
(
B + AB
* +* AB
( +* AB

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #35/45]

Page 36

C +* ABC
^ +*^ ABC
D +*^ ABCD
) +* ABCD^
) + ABCD^*
) ABCD^*+
- - ABCD^*+
E - ABCD^*+E
) ABCD^*+E-
OR
A + B * C ^ D - E
INFIX STACK POSTFIX
A A
+ + A
B + AB
* +* AB
C +* ABC
^ +*^ ABC
D +*^ ABCD
- - ABCD^*+
E - ABCD^*+E
ABCD^*+E-

OR
Any other method for converting the given ​infix​​ expression to its equivalent ​postfix
expression showing stack contents.
(½ Mark for conversion upto each operator illustrating through stack)
OR
​ BCD^*+E-​)
(1 Mark for only the final answer as A
4 (a) Write a statement in Python to open a text file WRITEUP.TXT so that new content 1
can be written in it.
Ans file= open("WRITEUP.TXT","w")
OR
file= open("WRITEUP.TXT","w+")
(1 mark for correct statement)

OR
(a) Write a statement in Python to open a text file README.TXT so that existing content 1
can be read from it.
Ans file= open("README.TXT","r")
OR

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #36/45]

Page 37

file= open("README.TXT","r+")
(1 mark for correct statement)

(b) Write a method/function ​ISTOUPCOUNT() in python to read contents from a text 2
file WRITER.TXT, to count and display the occurrence of the word “IS” or “TO” or
“UP”.
For example:
If the content of the file is
_______________________________________________________________________
IT IS UP TO US TO TAKE CARE OF OUR SURROUNDING. IT IS NOT
POSSIBLE ONLY FOR THE GOVERNMENT TO TAKE RESPONSIBILITY
_______________________________________________________________________
The method/function should display
Count of IS TO and UP is 6
Ans def ISTOUPCOUNT():
c=0
file=open('WRITER.TXT','r')
line = file.read()
word = line.split()
for w in word:
if w=="IS" or w=="TO" or w=="UP":
c=c+1
print "Count of IS TO and UP is ",c
file.close()
(½ Mark for opening the file)
(½ Mark for reading all lines, and dividing it into words)
(½ Mark for checking condition and incrementing count)
(½ Mark for displaying count)
OR
(b) Write a method/function ​AEDISP() in python to read lines from a text file 2
WRITER.TXT, and display those lines, which are starting either with A or starting
with E.
For example:
If the content of the file is
_______________________________________________________________________
A CLEAN ENVIRONMENT IS NECESSARY FOR OUR GOOD HEALTH.
WE SHOULD TAKE CARE OF OUR ENVIRONMENT.
EDUCATIONAL INSTITUTIONS SHOULD TAKE THE LEAD.
_______________________________________________________________________

The method should display
A CLEAN ENVIRONMENT IS NECESSARY FOR OUR GOOD HEALTH.
EDUCATIONAL INSTITUTIONS SHOULD TAKE THE LEAD.

Ans def AEDISP():
file=open('WRITER.TXT','r')
lines = file.readlines()

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #37/45]

Page 38

for w in lines:
if w[0]=="A" or w[0]=="E":
print w
file.close()
(½ Mark for opening the file)
(½ Mark for reading all lines, and using loop)
(½ Mark for checking condition)
(½ Mark for printing lines)
(c) Considering the following definition of class STOCK, write a method/function 3
COSTLY() in python to search and display Name and Price from a pickled file
STOCK.DAT, where Price of the items are more than 1000.
class Stock:
def __init__(self,N,P):
self.Name=N
self.Price=P
def Show(self):
print self.Name,"@",self.Price
Ans def COSTLY():
S=STOCK()
file=open('STOCK.DAT','rb')
try:
while True:
S=pickle.load(file)
if S.Price > 1000:
S.Show()
except EOFError:
pass
file.close()
(½ Mark for correct function header)
(½ Mark for opening the file STOCK.DAT correctly)
(½ Mark for correct loop)
(½ Mark for correct load())
(½ Mark for correct checking of Price)
(½ Mark for displaying the record)

Note: Marks should not be deducted if try except is not used

OR
(c) Considering the following definition of class DOCTORS, write a method/function 3
SPLDOCS() in python to search and display all the content from a pickled file
DOCS.DAT, where Specialisation of DOCTORS is “CARDIOLOGY”.
class DOCTORS:
def __init__(self,N,S):
self.Name=N
self.Specialisation=S
def Disp(self):
print self.Name,"#",self.Specialisation

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #38/45]

Page 39

Ans def SPLDOCS():
D=DOCTORS()
file=open('DOCS.DAT','rb')
try:
while True:
D=pickle.load(file)
if D.Specialisation == 'CARDIOLOGY':
D.Disp()
except EOFError:
pass
file.close()
(½ Mark for correct function header)
(½ Mark for opening the file DOCS.DAT correctly)
(½ Mark for correct loop)
(½ Mark for correct load())
(½ Mark for correct checking of Specialisation)
(½ Mark for displaying the record)
Note: Marks should not be deducted if try except is not used
SECTION C - (For all the candidates)
5 Write SQL queries for (i) to (iv) and write outputs for SQL queries (v) to (viii), which 8
are based on the table given below:
Table: TRAINS
TNO TNAME START END
11096 Ahimsa Express Pune Junction Ahmedabad Junction
12015 Ajmer Shatabdi New Delhi Ajmer Junction
1651 Pune Hbj Special Pune Junction Habibganj
13005 Amritsar Mail Howrah Junction Amritsar Junction
12002 Bhopal Shatabdi New Delhi Habibganj
12417 Prayag Raj Express Allahabad Junction New Delhi
14673 Shaheed Express Jaynagar Amritsar Junction
12314 Sealdah Rajdhani New Delhi Sealdah
12498 Shane Punjab Amritsar Junction New Delhi
12451 Shram Shakti Express Kanpur Central New Delhi
12030 Swarna Shatabdi Amritsar Junction New Delhi

Table: PASSENGERS
PNR TNO PNAME GENDER AGE TRAVELDATE
P001 13005 R N AGRAWAL MALE 45 2018-12-25
P002 12015 P TIWARY MALE 28 2018-11-10
P003 12015 S TIWARY FEMALE 22 2018-11-10

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #39/45]

Page 40

P004 12030 S K SAXENA MALE 42 2018-10-12
P005 12030 S SAXENA FEMALE 35 2018-10-12
P006 12030 P SAXENA FEMALE 12 2018-10-12
P007 13005 N S SINGH MALE 52 2018-05-09
P008 12030 J K SHARMA MALE 65 2018-05-09
P009 12030 R SHARMA FEMALE 58 2018-05-09

NOTE: All Dates are given in ‘YYY-MM-DD’ format
(i) To display details of all Trains which Start from New Delhi

Ans SELECT * FROM TRAINS WHERE START=’New Delhi’;

(½ Mark for correct SELECT statement)
(½ Mark for correct WHERE clause)
(ii) To display the PNR, PNAME, GENDER and AGE of all Passengers whose AGE is below
50.
Ans SELECT PNR, PNAME, GENDER, AGE
FROM PASSENGERS WHERE AGE < 50;
(½ Mark for correct SELECT statement)
(½ Mark for correct WHERE clause)
(iii) To display total number of MALE and ​FEMALE Passengers .

Ans SELECT GENDER, COUNT(*)
FROM PASSENGERS GROUP BY GENDER;
OR
SELECT GENDER, COUNT(GENDER)
FROM PASSENGERS GROUP BY GENDER;
(½ Mark for correct SELECT statement)
(½ Mark for correct GROUP BY/additional COUNT clause)
(iv) To display details of all Passengers travelling in Trains whose TNO is 12015

Ans SELECT * FROM PASSENGERS
WHERE TNO=12015;
(½ Mark for correct SELECT statement)
(½ Mark for correct WHERE clause)
(v) SELECT MAX(TRAVELDATE), MIN(TRAVELDATE) FROM PASSENGERS
WHERE GENDER = 'FEMALE';
Ans MAX(TRAVELDATE)​ ​MIN(TRAVELDATE)
2018-11-10 2018-05-09
(½ Mark for correct MAX(TRAVELDATE))
(½ Mark for correct MIN(TRAVELDATE))

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #40/45]

Page 41

(vi) SELECT END, COUNT(*) FROM TRAINS
GROUP BY END HAVING COUNT(*)>1;
Ans
END​ ​COUNT(*)
Habibganj 2
Amritsar Junction 2
New Delhi 4
(1 Mark for correct output)
NOTE: Values may be written in any order
(vii) SELECT DISTINCT TRAVELDATE FROM PASSENGERS;

Ans DISTINCT TRAVELDATE
2018-12-25
2018-11-10
2018-10-12
2018-05-09
(1 Mark for correct output)
NOTE: Values may be written in any order
(viii) SELECT TNAME, PNAME FROM TRAINS T,PASSENGERS P
WHERE T.TNO = P.TNO AND AGE BETWEEN 50 AND 60;
Ans TNAME​ ​PNAME
Amritsar Mail N S SINGH
Swarna Shatabdi R SHARMA
(1 Mark for correct output)

6 (a) State any one Distributive Law of Boolean Algebra and verify it using truth table. 2
Ans Distributive Law:
A+BC=(A+B)(A+C)
Verification using truth table
A B C BC A+BC A+B A+C (A+B).(A+C)
0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0
0 1 0 0 0 1 0 0
0 1 1 1 1 1 1 1
1 0 0 0 1 1 1 1
1 0 1 0 1 1 1 1
1 1 0 0 1 1 1 1
1 1 1 1 1 1 1 1

OR
A(B+C)=AB+AC
Verification using truth table

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #41/45]

Page 42

A B C B+C A.(B+C) A.B A.C AB+AC
0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 1 0 0 0 0
0 1 1 1 0 0 0 0
1 0 0 0 0 0 0 0
1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1
1 1 1 1 1 1 1 1

(1 Mark for stating any one Distributive Law correctly)
(1 Mark for correctly verifying the stated Law using Truth Table
(b) Draw the Logic Circuit of the following Boolean Expression: 2
​A’.B’ + A.C
Ans

(Full 2 Marks for drawing the Logic Circuit for the expression correctly)
OR
(½ Mark for drawing Logic circuit for (A’.B’) correctly)
(½ Mark for drawing Logic circuit for (A.C) correctly)
(c) Derive a Canonical POS expression for a Boolean function F, represented by the 1
following truth table:
X Y Z F(X,Y,Z)
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 0

Ans F(X,Y,Z)=(X+Y+Z’).(X+Y’+Z’).(X’+Y’+Z).(X’+Y’+Z’)
OR
F(X,Y,Z)= 𝚷(1,3,6,7)
(1 Mark for correctly writing the POS form)
OR
(½ Mark for any two correct terms)
Note: Deduct ½ mark if wrong variable names are written in the expression

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #42/45]

Page 43

(d) Reduce the following Boolean Expression to its simplest form using K-Map: 3
F(P,Q,R,S) = ​∑​(0,1,2,3,5,6,7,10,14,15)
Ans

Minimal expression : P’Q’ + RS’ +QR + P’S
OR

Minimal expression : P’Q’ + RS’ +QR + P’S
(½ Mark for plotting the 1s in K Map correctly)
(½ Mark each for 4 groupings)
(½ Mark for writing final expression in reduced/minimal form)
Note: Deduct ½ mark if wrong variable names are used
7 (a) Damodar Mohan has been informed that there had been a backdoor entry to his 2
computer, which has provided access to his system through a malicious
user/programs, allowing confidential and personal information to be subjected to
theft. It happened because he clicked a link provided in one of the pop-ups from a
website announcing him to be winner of prizes worth 1 Million Dollars. Which of the
following has caused this out of the following?
(i) Virus (ii) Worm (iii) Trojan Horse
Also mention what he should do to prevent this infection.
Ans (iii) Trojan Horse or (i) Virus
Use an antivirus application to prompt him about threats or avoid clicking on
unverified links.
(1 Mark for writing any correct answer Trojan Horse/Virus)
(1 Mark for writing any correct preventive measure)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #43/45]

Page 44

(b) Tarini Wadhawa is in India and she is interested in communicating with her uncle in 1
Australia. She wants to show one of her own designed gadgets to him and also wants
to demonstrate its working without physically going to Australia​. Which protocol out
of the following will be ideal for the same?
(i) POP3 (ii) SMTP (iii) VoIP (iv) HTTP
Ans (iii) VoIP OR (iv) HTTP OR (ii) SMTP (if sent by mail)
(1 Mark for writing any/all correct answer(s))
(c) Give two differences between 3G and 4G telecommunication technologies. 1
Ans ● Higher download/upload speeds in 4G compared to 3G
● Greater bandwidth and flexibility in 4G compared to 3G
● 3G is Voice+Data whereas 4G is only Data with voice overriding
(½ Mark for writing each correct difference upto any two differences)
(d) Write the expanded names for the following abbreviated terms used in Networking 2
and Communications:
(i) MBPS (ii) WAN (iii) CDMA (iv) WLL
Ans (i) MBPS - Mega Bytes per Second OR Mega Bits per second
(ii) WAN - Wide Area Network
(iii) CDMA - Code Division Multiple Access
(iv) WLL - Wireless in Local Loop
(½ Mark each for writing correct expansion)
(e) Jonathan and Jonathan Training Institute is planning to set up its centre in Amritsar
with four specialised blocks for Medicine, Management, Law courses along with an
Admission block in separate buildings. The physical distances between these blocks
and the number of computers to be installed in these blocks are given below. You as
a network expert have to answer the queries raised by their board of directors as
given in (i) to (iv).
Shortest distances between various locations in metres:
Admin Block to Management Block 60
Admin Block to Medicine Block 40
Admin Block to Law Block 60
Management Block to Medicine Block 50
Management Block to Law Block 110
Law Block to Medicine Block 40
Number of Computers installed at various locations are as follows:
Admin Block 150
Management Block 70
Medicine Block 20
Law Block 50

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #44/45]

Page 45

(i) Suggest the most suitable location to install the main server of this institution to get 1
efficient connectivity.
Ans Admin Block
(1 Mark for writing correct location)
(ii) Suggest the devices to be installed in each of these buildings for connecting 1
computers installed within the building out of the following:
● Modem
● Switch
● Gateway
● Router
Ans Switch OR Modem OR Router
(1 Mark for writing any/all correct device(s))
(iii) Suggest by drawing the best cable layout for effective network connectivity of the 1
blocks having server with all the other blocks.
Ans

(1 Mark for drawing the any correct layout)
(iv) Suggest the most suitable wired medium for efficiently connecting each computer 1
installed in every building out of the following network cables:
● Coaxial Cable
● Ethernet Cable
● Single Pair Telephone Cable.
Ans Ethernet Cable
(1 Mark for writing the correct network cable)

[Sub Code: 083 Series: BVM Paper Code: 91] ​ [​Page #45/45]

Document Details

Board / OrgCBSE
ExamClass 12
TypeSolution
Pages45
Updated30 Apr 2026