Professional Documents
Culture Documents
COMPUTER SCIENCE
Half Yearly Examination 2015 Class 12 [Set 1]Marking Scheme
Max marks: 70
1.
Time: 3
Hrs
Find invalid variable names from the following alongwith reason for being invalid.
[2]
(a) MyMarks
(d) while
(b)Class
(e) 12thClass
Ans.(a)MyMarkscontainsspace
(d)whilekeyword
(e)12thClassstartswithdigit
(f)Sales+Taxcontains+
(c)_YourMarks
(f ) Sales+Tax
[]
[]
[]
[]
Note: Deduct [] mark for every incorrect option not exceeding [2] marks
2.
Ans.
Refer Handout:
(a) REF:DPSR/COMP12/20152016/11 Page 1
(b) REF: DPSR/COMP12/20152016/12 Page 5 and 6
[2x2=4]
[2]
voidmain()
{
intN[5]charS[5][10]
cout<<Enter5integers
for(inti=0i<5i++)
{
cin>>N[i]
itoa(N[i],S[i],10)
}
for(i=0i<5i++)
{
intL=strlen(S[i])
cout<<S[i][L1]<<setw(10)<<N[i]<<endl
}
}
1/15
DPSR/20152016/HY/CS_MS
iostream.h
stdlib.h
string.h
iomanip.h
4.
Find the outputs of the following (Assume all necessary header files are included):
(i)
[2]
voidEnCode(charMSG[])
{
for(intI=0MSG[I]!=\0I++)
{
if(I%2)
MSG[I]=(islower(MSG[I]))?toupper(MSG[I]):%
else
MSG[I]=(isupper(MSG[I]))?tolower(MSG[I]):@
}
}
voidmain()
{
charTXT[]=HalFYearLY
EnCode(TXT)
cout<<TXT<<endl
}
Ans hA@%yE@Rl%
[1] for all correct changes in odd locations
[1] for all correct changes in even locations
[]
[]
[]
[]
Ans.
cout, cin
itoa()
strlen()
setw()
(ii)
[2]
#defineChangeDig(X)((X48)+3)%10+48
#defineChangeAlp(X)((X65)+2)%26+65
voidmain()
{
charMSG[]="YEAR2015"
for(inti=0MSG[i]!='\0'i++)
{
if(isdigit(MSG[i]))
MSG[i]=ChangeDig(MSG[i])
else
MSG[i]=ChangeAlp(MSG[i])
}
cout<<MSG<<endl
}
2/15
DPSR/20152016/HY/CS_MS
Ans
AGCT5348
[]
[]
[]
[]
for
for
for
for
AG
CT
53
48
(iii)
voidSwap(int&X,int&Y)
{
intT=X
X=Y
Y=T
}
voidmain()
{
intA[3][3]=
{{1,2,3},{4,5,6},{7,8,9}}
for(intI=0I<=1I++)
for(intJ=I+1J<=2J++)
Swap(A[I][J],A[J][I])//1
//
for(I=0I<=2I++)
Swap(A[I][0],A[I][2])//2
//
for(I=0I<=3I++)
{
for(J=0J<=3J++)
cout<<A[I][J]
cout<<endl
}
}
Ans 741
852
963
[1]
[1]
[1]
(iv)
voidmain()
{
intArr[]={10,20,30,40}
int*P=Arr,I,J
for(I=0I<3I++)
{
(*P)+=(*P)%2
for(J=0J<=IJ++)
cout<<Arr[J]<<:
P++
cout<<endl
}
3/15
DPSR/20152016/HY/CS_MS
Ans
10:
10:20:
10:20:30:
[]
[] + []
[] + [] + []
Note: Deduct [] marks for not mentioning : after any or all values
5.
Rewrite the following program after correcting all the syntactical errors.
Underline each correction made.
[4]
#include<iostream.h>
voidMain()
{
intNumcharWord
gets(Word)
Reverse(Word)
}
voidReverse(String)
{
Num=strlen(String)
for(intI=Num1I>=0I)
cout<<String(I)
}
Ans
#include<iostream.h>
#include<stdio.h>
[]
#include<string.h>
[]
voidReverse(char[])
[]
voidmain()
[]
{
intNumcharWord[20]
[]
gets(Word)
Reverse(Word)
}
voidReverse(charString[])
[]
{
intNum=strlen(String)
[]
for(intI=Num1I>=0I)
cout<<String[I]
[]
}
6.
Given the following code, choose the correct option(s) from (a) to (d) for
output of the code. Write Minimum and Maximum values that can be
assigned to variable L.
[2]
#include<iostream.h>
#include<stdlib.h>
4/15
DPSR/20152016/HY/CS_MS
voidmain()
{constintMax=3
randomize()
intA[Max]={10,20,30}
intL=random(Max)
if(L%2)
A[L]=A[L]+1
else
A[L]=A[L]1
for(intI=0I<MaxI++)
cout<<A[I]<<#
}
(a)9#21#29# (b)9#20#29#
(c)10#21#30# (d)11#20#31#
Ans L(Min)=0
[]
L(Max)=2
CorrectOption(c)
[]
[1]
Justification
L
0
1
2
7.
Output
Option
9#20#30#
None
10#21#30# (c)
10#20#29# None
Answer the questions (i) to (iv) after going through the following class:
classWorkshop
{
intSession
public:
Workshop(intN)
//Function1
{
Session=N
cout<<"Workshopssession"<<Session<<end1
}
voidLecture()
//Function2
{
cout<<"Lecturesintheworkshopon"<<end1
}
~Workshop()
//Function3
{
cout<<"Voteofthanks"<<end1
}
[4]
5/15
DPSR/20152016/HY/CS_MS
voidmain()
{
____________________ //statement1
____________________
//statement2
}
(i)
In Object Oriented Programming, what is Function 3 referred as and
when does it get invoked/ called?
(ii)
Write statement 1 to declare an object W of class Workshop.
(iii)
Write statement 2 to invoke Function 2 for object W.
(iv)
For correctly written statements 1 and 2, what will be the output of
the above code?
Ans
(i)
(ii)
(iii)
(iv)
8.
Destructor
It gets invoked when the scope of an object gets over
Workshop W(1);
W.Lecture();
Workshopssession1
Lecturesintheworkshopon
Voteofthanks
[]
[]
[]
[]
[1]
[]
[]
Ans
classOlympiad
{
intOno
charOdesc[20]
intScore
6/15
DPSR/20152016/HY/CS_MS
charStatus
public:
Olympiad()
voidGet()
voidAssign(int)
voidShow()
}
[1]
Olympiad::Olympiad()
{
Ono=1001
strcpy(Odesc,None)
Score=0
Status=X
}
voidOlympiad::Get()
{
cin>>Ono
gets(Odesc)
cin>>Score
}
voidOlympiad::Assign(intPassMarks)
{
if(Score>PassMarks)
Status=Y
else
Status=N
}
voidOlympiad::Show()
{
cout<<Ono<<Odesc<<Score<<Status<<endl
}
[1]
[]
[1]
[]
7/15
DPSR/20152016/HY/CS_MS
9.
voidmain()
{
FundsF
_________
_________
}
(i)
What type of inheritance is illustrated above?
(ii)
Write the names of members accessible to Interest() of class Funds.
(iii)
Is the function Get_data( ) of class Bank accessible to objects of class
Loans? Justify your answer.
(iv)
Write the names of members accessible to Object F of class Funds in
the main().
Ans
(i)
(ii)
(iii)
(iv)
Multilevel Inheritance
[1]
Value of class Funds
Calc(), Show(), Type of class Loans
Get_data( ,)Display( ) of class Bank
[1]
No
[]
Get_data() of class Bank is inherited as protected member in class
Loans
[]
Interest() of class Funds
8/15
DPSR/20152016/HY/CS_MS
[1]
Assuming that a text file named STORY.TXT contains some text written into
it, write definition for a function named ALTERTEXT(), that reads the file
STORY.TXT and creates a new file named NEWSTORY.TXT, which shall
contain only those lines from the file STORY.TXT which start with a
lowercase vowel (i.e. with a,e,i,o,u).
For example if the file STORY.TXT contains:
[2]
Anelephantwasplayingwithaball
andanantwentforwalk.
Ans
voidALTERTEXT()
{
ifstreamfile1(STORY.TXT)
ofstreamfile2(NEWSTORY.TXT)
charLine[80]
while(file1.getline(Line,80))
{
switch(Line[0])
{
casea:
casee:
casei:
caseo:
caseu:
file2<<Line<<endl
}
}
file1.close()
file2.close()
}
11.
[]
[]
[]
[]
9/15
DPSR/20152016/HY/CS_MS
defined below:
[3]
classDoctor
{
charDName[10]
charSpeciality[16]
floatFee
public:
voidGetdata()
{gets(DName)gets(Speciality)cin>>Fee}
voidShowdata()
{cout<<DName<<:<<Speciality<<:<<Fee<<endl}
char*RSpeciality(){returnSpeciality}
floatRFee(){returnFee}
}
Ans
12.
voidEconomyDoc()
{
ifstreamfile(DOCTORS.DAT,ios::binary) []
DoctorD
while(file.read((char*)&D,sizeof(D)))
[1]
{
if(strcmp(D.RSpeciality(),ENT)==0&&D.RFee()<500)[1]
D.Showdata()
[]
}
file.close()
}
Assuming that the binary file DOCTORS.DAT as mentioned in the previous
Speciality
Fee
R.Kumar
Pediatric
S.Singh
M.Rao
Dental
Skin
500
700
S.Sharma
ENT
450
1200
[2]
10/15
DPSR/20152016/HY/CS_MS
File.read((char*)&D,sizeof(D))
if(D.RFee()<=500)
cout<<Found@<<File.tellg()sizeof(D)<<endl
else
cout<<Oops...<<endl
}
Ans
13.
Ans
Oops...
Found@30
Oops...
Found@90
[]
[]
[]
[]
intIspalin(charS[])
{
for(intL=0S[L]!=\0L++)
intR=1
for(inti=0i<L/2i++)
if(S[i]!=S[L1i])
R=0
returnR
}
[1] mark for correct loop(s)
[1] mark for correct check
[1] mark for returning correct value
14.
Write definition for a function int SumEnd2(int A[], int N), which
returns the accumulated sum of all those elements, which are ending with 2
of the array A. For example if the array contains.
[3]
52
52 +
13
42
12
42+ 12+
=106
11/15
DPSR/20152016/HY/CS_MS
Ans.
intSumEnd2(intA[],intN)
{
intS=0
for(inti=0i<Ni++)
{
if(A[i]%10==2)
S+=A[i]
}
returnS
}
Function returns 68
5+
8+
9
13
10
14
11
15
12
16
9+
12+
2+ 3+
14+ 15
=68
Ans
intSumNonD(intA[4][4])
{
intS=0
for(inti=0i<4i++)
for(intj=0j<4j++)
if(i!=j&&(i+j)!=3)
S+=A[i][j]
returnS
}
12/15
DPSR/20152016/HY/CS_MS
16.
n array P[2..4][3..6] is stored in the memory along the row with each of the
A
element occupying 2 bytes. Find out the address of element P[3][2], if the base
address of P is 25000.
[3]
Ans
Loc(A[i][j])Row=BA+W[(iLBR)*C+(jLBC)]
Where,
BA=25000
W=2
LBR=2
LBC=3
C=6[3]+1=10
Loc(A[3][2])Row
=
25000+2[(3(2))*10+(2(3))]
=
25000+2[50+1]
=
25000+102
=
25102
An array T[10][5] is stored in the memory in column major form, with each
element occupying 4 bytes of memory. If the address of T[2][3] is 15000,
then calculate the address of the location T[6][2].
[3]
Ans
Loc(A[i][j])Col=BA+W[(iLBR)+(jLBC)*R]
Where,
W=4
LBR=0
LBC=0
R=10
Loc(A[2][3])Col
=15000
=BA+4[2+3*10]
=BA+4[32]
=BA+128
BA=15000128=14872
Loc(A[6][2])Col
=14872+4[6+2*10]
=14872+4[26]
=14872+104
=14976
13/15
DPSR/20152016/HY/CS_MS
18.
Ans
Element
StackContents
45
45
20
45,20
10
45,20,10
45,30
15
12
15,12
10
15,12,10
15,2
30
[]
[]
[]
[]
19.
Ans
Mark
Mark
Mark
Mark
till+
till
till(second)
till*
Convert the following to Postfix notation of expression (Show status of stack after
each operation)
PQ/(R+S)*T
[2]
PQ/(R+S)*T
=
P(Q/(R+S))*T
=
P((Q/(R+S))*T)
=
(P((Q/(R+S))*T))
Element
StackofOperators
PostfixExpression
PQ
PQR
/+
PQRS
PQRS+
PQRS+/
PQRS+/T
14/15
DPSR/20152016/HY/CS_MS
PQRS+/T*
PQRS+/T*
[ ] mark forRS+
+ [ ] mark tillQRS+/
+ [ ] mark tillQRS+/T*
+ [ ] mark tillPQRS+/T*
20.(a) Define a function in C++ to display and remove an integer from a Static
Circular Queue, which can contain a maximum of 10 integers:
[4]
Ans
Refer [REF: DPSR/COMP12/20152016/12] Page 6
[1] mark for correct function header
[1] mark for checking empty queue
[1] mark for incrementing front
[1] mark for displaying correct queue content removed
(b) Define a function in C++ to push a Book into a static stack of Books, which
can contain maximum 25 Books. The structure of Book is as follows:
[4]
structBook
{
intBNo
charBName[20]
}
Ans
Refer [REF: DPSR/COMP12/20152016/12] Page 5
[1] mark for correct function header
[1] mark for checking full stack
[1] mark for incrementing top
[1] mark for inserting correct stack content at top
15/15
DPSR/20152016/HY/CS_MS