ti.pdf

84
Texas Instruments Placement Paper (Reasoning) 1. If the date is written as MMDDYYYY, and then 10022001, ie)oct 2 2001 is a palindrome. which is the immediate palindrome before that date. 2. There r 2 trains travelling at 100 MPH each. there is a 200Mile tunnel. the trains travel in opposite directions. when the trains enter, a supersonic bee starts at the tunnel, touches the other train, comes back touches the first train, turns again and touches the other train and so on until the trains collide. Find the distance travelled by the bee. 3. It is 12.00 o clock. Find how often the minute hand meets the hour hand. 4. Find the maximum product using positive integers the sum of which is 100. Dont know if i am sure with this one. sorry. i didnt do this. 5. In a train Art is found dead. hours later 4 people are queried, Blonde says i am innocent, i didnt speak with Art White says i am innocent, Blonde spoke with Art Old says i am innocent, the brunette killed Art Brunette says i am innocent, one of the men killed Art The inspector says simple, 4 true statements, 4 false statements. I know the killer, very simple!!! Find out the killer. (only one is involved.) 6. 2 maths geniuses meet after 20 yrs.one says i am married. and have 3 daughters. the product of their ages is 72. the sum is the same as the house no. other says, but I cant find it out. The other says. . simple. ok, my eldest daughter has just started the piano classes.Find their ages.This one is there in previous question papers also. 7. 5 sea pirates have 100 gold coins and want to share it. They propose a plan. The senior most one has to propose an idea, if at least 50 % agree, the coins r shared accordingly. else the senior is killed and the next senior most is asked to present a plan and so on .note, all the guys r very clever and very greedy and dont want to lose the coins, and dont want to die. Form a way to share the money. I didnt do this....no time ANSWERS 1. I worked it out like this.. before 2001, 2000 cannot be taken as MMDD becomes 0002.also anything after 14 century cant be considered as 1401 would mean 1041, there r only a max of 31 days a month. so the century nos must be only 13(reverse for 31)so the yr is 13xx. now 1399to 1391 is not possible as reverse means 99 to 19 but max no of months is 12. so 1390 becomes 09311390... but 9th month has only 30 days(lucky i remembered it).. so 1380 is the most recent

Upload: kunal-sekhri

Post on 02-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

texas instrument paper

TRANSCRIPT

Page 1: ti.pdf

Texas Instruments Placement Paper (Reasoning)

1. If the date is written as MMDDYYYY, and then 10022001, ie)oct 2 2001 is a

palindrome. which is the immediate palindrome before that date.

2. There r 2 trains travelling at 100 MPH each. there is a 200Mile tunnel. the

trains travel in opposite directions. when the trains enter, a supersonic bee starts

at the tunnel, touches the other train, comes back touches the first train, turns

again and touches the other train and so on until the trains collide. Find the

distance travelled by the bee.

3. It is 12.00 o clock. Find how often the minute hand meets the hour hand.

4. Find the maximum product using positive integers the sum of which is 100. Dont

know if i am sure with this one. sorry. i didnt do this.

5. In a train Art is found dead. hours later 4 people are queried,

Blonde says i am innocent, i didnt speak with Art

White says i am innocent, Blonde spoke with Art

Old says i am innocent, the brunette killed Art

Brunette says i am innocent, one of the men killed Art

The inspector says simple, 4 true statements, 4 false statements.

I know the killer, very simple!!!

Find out the killer. (only one is involved.)

6. 2 maths geniuses meet after 20 yrs.one says i am married. and have 3

daughters. the product of their ages is 72. the sum is the same as the house no.

other says, but I cant find it out. The other says. . simple. ok, my eldest daughter

has just started the piano classes.Find their ages.This one is there in previous

question papers also.

7. 5 sea pirates have 100 gold coins and want to share it. They propose a plan. The

senior most one has to propose an idea, if at least 50 % agree, the coins r shared

accordingly. else the senior is killed and the next senior most is asked to present

a plan and so on .note, all the guys r very clever and very greedy and dont want

to lose the coins, and dont want to die. Form a way to share the money.

I didnt do this....no time

ANSWERS

1. I worked it out like this.. before 2001, 2000 cannot be taken as MMDD becomes

0002.also anything after 14 century cant be considered as 1401 would mean

1041, there r only a max of 31 days a month. so the century nos must be only

13(reverse for 31)so the yr is 13xx. now 1399to 1391 is not possible as reverse

means 99 to 19 but max no of months is 12. so 1390 becomes 09311390... but

9th month has only 30 days(lucky i remembered it).. so 1380 is the most recent

Page 2: ti.pdf

palindrome ... which beocomes 08311380.SOln is 08 31 1380.

2. This one i really screwed up royally. it took me 25 minutes to solve.. i took the

average speeds, the distance travelled by the trains and the bee, took ratio of

speeds and distance, subtracting it from the tunnels length for every time the bee

touched the trains. phew lot of calculation.. and got the ans as 1000.But when i

rechecked it a thought struck me... so silly of me. The trains collide at the middle.

ie)after 100 miles. that means after 1 hour. so the bee travels for 1 hour touching

each train till they collide. its speed being 1000 mph, it travelled a 1000 miles..

3. At 12.00 the minute and hour hand are together. but at 1.00 they are 5 mins

apart. so in 60 minutes the gain is 55 mins for the min hand. to be together it

has to gain another 5 more mins. so the time taken to gain 5 mins is

60*5/55==5.454 So the time taken to meet again is 65.454 So the hands meet

every 65.454 minutes

1. nt fact(int n) int fact_ii(int n) { { if (n >0) int fact_val = 1, i = 0; return n*fact (n-1); for (i = 1; i <= n ; i++) else fact_val = fact_val*i; return 1; return fact_val; } } (a) (i) only (b) (ii) only (c) both (d) None of these

2. (2) Which of the following is a semantic error? (a) Division by zero (b) Missing of a semicolon at the end of a statement (c) Assigning a single precision real value to a long integer (d) All the above

3. (3) If the following code segment is to count the no of zero’s in the given integer ‘x’ in its binary representation, what is to replaced by CONDITION? int i, count, x; for(i=0, count=0;i<16;i++) if(CONDITION) count++; a. (x & (1 << i)) b. (x & (1 << i))

Page 3: ti.pdf

c. (x && (1 << i)) d. None of the above.

4. A graph was given and asked to find out the minimum no of colors required to color the graph? (a) 1 (b) 2 (c) 3 (d) The graph can’t be colored

5. Inorder traversal of a binary tree is d c e b a and preorder traversal of a binary tree is b c d e a. Find out the post order traversal? (6) Which is not an advantage of using subroutines? (a) Easier maintenance (b) Runtime reduces (c) Storage space reduces (d) Modularity

6. A k-diagonal matrix is a n *n square matrix in which the elements on the principal diagonal and k diagonals above the principal diagonal and k diagonals below the principal diagonal only have none zero elements. Other elements are zero’s. In order to save the space, the non zero elements are stored in a one dimensional array. The no of locations in this array are: (a) n*(n-k-1)/2 (b) n*(n-1) – (n-k)(n-k-2) (c) n*(n-1) – (n-k)(n-k-2) (d) n*n – (n-k-1)

7. A 1D - array A whose size is N is given and is divided into P partitions and an element x is to be searched in the array. Each partition is given to oneprocessor. The elements are searched with in the partition using a binary search. What is the time complexity of the algorithm? (a) O (N/P) (b) O (P) (c) O ( log (N/P)) (d) O ( log (N/P)) + O (P log P)

8. Write the code segment to insert an element p into the linked list after an element q? Make necessary pointer adjustments?

Page 4: ti.pdf

Ans: p.next = q.next; q.next = p;

9. Given a matrix A. What is the minimum no of multiplications do u need to compute A10 ? (a) 9 (b) 5 (c) 4 (d) 6

1. if a 5-stage pipe-line is flushed and then we have to execute 5 and 12

instructions respectively then no. of cycles will be

a. 5 and 12

b. 6 and 13

c. 9 and 16

d.none

2. k-map

ab

----------

c 1 x 0 0

1 x 0 x

solve it

a. A.B

B. ~A

C. ~B

D. A+B

3. CHAR A[10][15] AND INT B[10][15] IS DEFINED WHAT'S THE ADDRESS OF

A[3][4] AND B[3][4] IF ADDRESS OD A IS OX1000 AND B IS 0X2000

A. 0X1030 AND 0X20C3

B. OX1031 AND OX20C4

AND SOME OTHERS..

4. int f(int *a)

{

int b=5;

a=&b;

}

main()

Page 5: ti.pdf

{

int i;

printf("\n %d",i);

f(&i);

printf("\n %d",i);

}

what's the output .

1.10,5

2,10,10

c.5,5

d. none

5. main()

{

int i;

fork();

fork();

fork();

printf("----");

}

how many times the printf will be executed .

a.3

b. 6

c.5

d. 8

6. void f(int i)

{

int j;

for (j=0;j<16;j++)

{

if (i & (0x8000>>j))

printf("1");

else

printf("0");

}

}

what's the purpose of the program

a. its output is hex representation of i

b. bcd

c. binary

d. decimal

Page 6: ti.pdf

7. #define f(a,b) a+b

#define g(a,b) a*b

main()

{

int m;

m=2*f(3,g(4,5));

printf("\n m is %d",m);

}

what's the value of m

a.70

b.50

c.26

d. 69

8. main()

{

char a[10];

strcpy(a,"\0");

if (a==NULL)

printf("\a is null");

else

printf("\n a is not null");}

what happens with it .

a. compile time error.

b. run-time error.

c. a is null

d. a is not null.

9. char a[5]="hello"

a. in array we can't do the operation .

b. size of a is too large

c. size of a is too small

d. nothing wrong with it .

10. local variables can be store by compiler

a. in register or heap

b. in register or stack

c .in stack or heap .

d. global memory.

11. average and worst time complexity in a sorted binary tree is

Page 7: ti.pdf

12. a tree is given and ask to find its meaning (parse-tree)

(expression tree)

ans. ((a+b)-(c*d)) ( not confirmed)

13. convert 40.xxxx into binary .

14. global variable conflicts due to multiple file occurance

is resolved during

a. compile-time

b. run-time

c. link-time

d. load-time

15. two program is given of factorial. one with recursion and one without

recursion .question was which program won't run for very big no. input because

of stack overfow .

a. i only (ans.)

b. ii only

c. i& ii both .

c. none

16. struct a

{

int a;

char b;

int c;

}

union b

{

char a;

int b;

int c;

};

which is correct .

a. size of a is always diff. form size of b.(ans.)

b. size of a is always same form size of b.

c. we can't say anything because of not-homogeneous (not in ordered)

d. size of a can be same if ...

1. (steeper transition) by:

a. Increasing W/L of PMOS transistor

b. Increasing W/L of NMOS transistor

c. Increasing W/L of both transistors by the same factor

d. Decreasing W/L of both transistor by the same factor

2. Minimum number of 2-input NAND gates that will be required to

implement the function: Y = AB + CD + EF is

a. 4

Page 8: ti.pdf

b. 5

c. 6

d. 7

3. Consider a two-level memory hierarchy system M1 & M2. M1 is accessed

first and on miss M2 is accessed. The access of M1 is 2 nanoseconds and the miss

penalty (the time to get the data from M2 in case of a miss) is 100 nanoseconds.

The probability that a valid data is found in M1 is 0.97. The average memory

access time is:

a. 4.94 nanoseconds

b. 3.06 nanoseconds

c. 5.00 nanoseconds

d. 5.06 nanoseconds

4. Interrupt latency is the time elapsed between:

a. Occurrence of an interrupt and its detection by the CPU

b. Assertion of an interrupt and the start of the associated ISR

c. Assertion of an interrupt and the completion of the associated ISR

d. Start and completion of associated ISR

5. Which of the following is true for the function (A.B + A’.C + B.C)

a. This function can glitch and can be further reduced

b. This function can neither glitch nor can be further reduced

c. This function can glitch and cannot be further reduced

d. This function cannot glitch but can be further reduced

6. For the two flip-flop configuration below, what is the relationship of the

output at B to the clock frequency?

a. Output frequency is 1/4th the clock frequency, with 50% duty cycle

b. Output frequency is 1/3rd the clock frequency, with 50% duty cycle

c. Output frequency is 1/4th the clock frequency, with 25% duty cycle

d. Output frequency is equal to the clock frequency

7. The voltage on Node B is: a. 0 b. 10 c. –10

8.A CPU supports 250 instructions. Each instruction op-code has these fields:

a. The instruction type (one among 250) b. A conditional register specification c. 3 register operands d. Addressing mode specification for both source operands

Page 9: ti.pdf

9. The CPU has 16 registers and supports 5 addressing modes. What is the instruction

op-code length in bits?

32

24

30

36

10. In the iterative network shown, the output Yn of any stage N is 1 if the total number of 1s at the inputs starting from the first stage to the Nth stage is odd. (Each identical box in the iterative network has two inputs and two outputs). The optimal logic structure for the box consists of:

a. One AND gate and one NOR gate b. One NOR gate and one NAND gate c. Two XNOR gates d. One XOR gate

11.Consider a circuit with N logic nets. If each net can be stuck-at either values 0 and 1, in how many ways can the circuit be faulty such that only one net in it can be faulty, and such that up-to all nets in it can be faulty?

a. 2 and 2N b. N and 2^N c. 2N and 3^N-1 d. 2N and 3N

12. In the circuit shown, all the flip-flops are identical. If the set-up time is 2 ns, clock->Q delay is 3 ns and hold time is 1 ns, what is the maximum frequency of operation for the circuit? a. 200 MHz b. 333 MHz c. 250 MHz d. None of the above

13. Which of the following statements is/are true?

I. Combinational circuits may have feedback, sequential circuits do not.

II. Combinational circuits have a ‘memory-less’ property, sequential circuits do not.

III. Both combinational and sequential circuits must be controlled by an external clock.

a. I only b. II and III only c. I and II only

Page 10: ti.pdf

d. II only

14.Consider an alternate binary number representation scheme, wherein the number of ones M, in a word of N bits, is always the same. This scheme is called the M-out-of-N coding scheme. If M=N/2, and N=8, what is the efficiency of this coding scheme as against the regular binary number representation scheme? (As a hint, consider that the number of unique words represent able in the latter representation with N bits is 2^N. Hence the efficiency is 100%)

a. Close to 30% b. Close to 50% c. Close to 70% d. Close to 100%

15.A CPU supports 4 interrupts- I1, I2, I3 and I4. It supports priority of interrupts. Nested interrupts are allowed if later interrupt is higher priority than previous one. During a certain period of time, we observe the following sequence of entry into and exit from the interrupt service routine:

a. I1-start---I2-start---I2-end---I4-start---I3-start---I3-end---I4-end---I1-end

From this sequence, what can we infer about the interrupt routines?

a. I3 > I4 > I2 > I1 b. I4 > I3 > I2 > I1 c. I2 > I1; I3 > I4 > I1 d. I2 > I1, I3 > I4 > I2 > I1

16. I decide to build myself a small electric kettle to boil my cup of tea. I need 200 ml of water for my cup of tea. Assuming that typical tap water temperature is 25 C and I want the water boiling in exactly one minute, then what is the wattage required for the heating element?

[Assume: Boiling point of water is 100 C, 1 Calorie (heat required to change 1 gm of water by 1 C)= 4 joules, 1 ml of water weighs 1 gm.]

a. Data given is insufficient b. 800 W c. 300 W d. 1000 W e. 250 W

17.The athletics team from REC Trichy is traveling by train. The train slows down, (but does not halt) at a small wayside station that has a 100 mts long platform. The sprinter (who can run 100 mts in 10 sec) decides to jump down and get a newspaper and some idlis. He jumps out just as his compartment enters the platform and spends 5 secs buying his newspaper that is at the point where he jumped out. He then sprints along the platform to buy idlis that is another 50 mts. He spends another 5 secs buying the idlis. He is now just 50 mts from the other end of the platform where the train is moving out. He begins running in the direction of the train and the only other open door in his train is located 50 mts behind the door from where he jumped. At what(uniform) speed should the train be traveled if he just misses jumping into the open door at the very edge of the platform?

Page 11: ti.pdf

a. Make the following assumptions He always runs at his peak speed uniformly

The train travels at uniform speed He does not wait (other than for the idlis & newspaper) or run

baclwards b. Data given is insufficient

c. 4 m/s d. 5 m/s e. 7.5 m/s f. 10 m/s

18.State which of the following gate combinations does not form a universal logic set:

a. 2-input AND + 2-input OR b. 2-to-1 multiplexer c. 2-input XOR + inverter d. 3-input NAND

19.For the circuit shown below, what should the function F be, so that it produces an output of the same frequency (function F1), and an output of double the frequency (function F2).

a. F1= NOR gate and F2= OR gate b. F1=NAND gate and F2= AND gate

c. F1=AND gate and F2=XOR gate d. None of the above

20.The FSM (finite state machine) below starts in state Sa, which is the reset state, and detects a particular sequence of inputs leading it to state Sc. FSMs have a few characteristics. An autonomous FSM has no inputs. For a Moore FSM, the output depends on the present state alone. For a Mealy FSM, the output depends on the present state as well as the inputs. Which of the statements best describes the FSM below?

a. It has two states and is autonomous b. The information available is insufficient

c. It is a Mealy machine with three states d. It is a Moor machine with three states

21In the circuit given below, the switch is opened at time t=0. Voltage across the capacitor at t=infinity is:

a. 2V b. 3V c. 5V d. 7V

Page 12: ti.pdf

22.What is the functionality represented by the following circuit?

a. y= ! (b+ac) b. y= ! (a+bc) c. y= ! (a(b+c)) d. y= ! (a+b+c)

23.The value (0xdeadbeef) needs to stored at address 0x400. Which of the below ways will the memory look like in a big endian machine: 0x403 0x402 0x401 0x400

a. be ef de ad

b. ef be ad de

c. fe eb da ed

d. ed da eb fe

24. In a given CPU-memory sub-system, all accesses to the memory take two cycles. Accesses to memories in two consecutive cycles can therefore result in incorrect data transfer. Which of the following access mechanisms guarantees correct data transfer?

a. A read operation followed by a write operation in the next cycle. b. A write operation followed by a read operation in the next cycle.

c. A NOP between every successive reads & writes d. None of the above

25.An architecture saves 4 control registers automatically on function entry (and restores them on function return). Save of each registers costs 1 cycle (so does restore). How many cycles are spent in these tasks (save and restore) while running the following un-optimized code with n=5:

a. Void fib(int n)

{

if((n==0) || (n==1)) return 1;

return(fib(n-1) + fib(n-2));

}

a. 120 b. 80 c. 125 d. 128

26.The maximum number of unique Boolean functions F(A,B), realizable for a two input (A,B) and single output (Z) circuit is:

Page 13: ti.pdf

a. 2 b. 6 c. 8

Can we declare a static function as virtual?

Ans: No. The virtual function mechanism is used on the specific object that

determines which virtual function to call. Since the static functions are not any

way related to objects, they cannot be declared as virtual.

2. Can user-defined object be declared as static data member of another class?

Ans: Yes. The following code shows how to initialize a user-defined object.

#include

class test

{

int i ;

public :

test ( int ii = 0 )

{

i = ii ;

}

} ;

class sample

{

static test s ;

} ;

test sample::s ( 26 ) ;

Here we have initialized the object s by calling the one-argument constructor.

We can use the same convention to initialize the object by calling multiple-

argument constructor.

3. What is forward referencing and when should it be used?

Ans: Consider the following program:

class test

{

public :

friend void fun ( sample, test ) ;

} ;

class sample

{

public :

friend void fun ( sample, test ) ;

} ;

void fun ( sample s, test t )

{

// code

Page 14: ti.pdf

}

void main( )

{

sample s ;

test t ;

fun ( s, t ) ;

}

This program would not compile. It gives an error that sample is undeclared

identifier in the statement friend void fun ( sample, test ) ; of the class test. This

is so because the class sample is defined below the class test and we are using it

before its definition. To overcome this error we need to give forward reference of

the class sample before the definition of class test. The following statement is

the forward reference of class sample. Forward referencing is generally required

when we make a class or a function as a friend.

4. The istream_withassign class has been derived from the istream class and

overloaded assignment operator has been added to it. The _withassign classes

are much like their base classes except that they include overloaded assignment

operators. Using these operators the objects of the _withassign classes can be

copied. The istream, ostream, and iostream classes are made uncopyable by

making their overloaded copy constructor and assignment operators private.

5. How do I write my own zero-argument manipulator that should work same as

hex?

Ans: This is shown in following program.

#include

ostream& myhex ( ostream &o )

{

o.setf ( ios::hex) ;

return o ;

}

void main( )

{

cout << endl << myhex << 2000 ;

}

6.We all know that a const variable needs to be initialized at the time of

declaration. Then how come the program given below runs properly even when

we have not initialized p?

#include

void main( )

{

const char *p ;

p = "A const pointer" ;

cout << p ;

Page 15: ti.pdf

}

Ans: The output of the above program is 'A const pointer'. This is because in this

program p is declared as 'const char*' which means that value stored at p will be

constant and not p and so the program works properly

7. How do I refer to a name of class or function that is defined within a

namespace?

Ans: There are two ways in which we can refer to a name of class or function

that is defined within a namespace: Using scope resolution operator through the

using keyword. This is shown in following example:

namespace name1

{

class sample1

{

// code

} ;

}

namespace name2

{

class sample2

{

// code

} ;

}

using namespace name2 ;

void main( )

{

name1::sample1 s1 ;

sample2 s2 ;

}

Here, class sample1 is referred using the scope resolution operator. On the other

hand we can directly refer to class sample2 because of the statement using

namespace name2 ; the using keyword declares all the names in the namespace

to be in the current scope. So we can use the names without any qualifiers.

8. While overloading a binary operator can we provide default values?

Ans: No!. This is because even if we provide the default arguments to the

parameters of the overloaded operator function we would end up using the

binary operator incorrectly. This is explained in the following example:

sample operator + ( sample a, sample b = sample (2, 3.5f ) )

{

}

void main( )

Page 16: ti.pdf

{

sample s1, s2, s3 ;

s3 = s1 + ; // error

}

9. How do I carry out conversion of one object of user-defined type to another?

Ans: To perform conversion from one user-defined type to another we need to

provide conversion function. Following program demonstrates how to provide

such conversion function.

class circle

{

private :

int radius ;

public:

circle ( int r = 0 )

{

radius = r ;

}

} ;

class rectangle

{

private :

int length, breadth ;

public :

rectangle( int l, int b )

{

length = l ;

breadth = b ;

}

operator circle( )

{

return circle ( length ) ;

}

} ;

void main( )

{

rectangle r ( 20, 10 ) ;

circle c;

c = r ;

}

Here, when the statement c = r ; is executed the compiler searches for an

overloaded assignment operator in the class circle which accepts the object of

type rectangle. Since there is no such overloaded assignment operator, the

conversion operator function that converts the rectangle object to the circle

object is searched in the rectangle class. We have provided such a conversion

Page 17: ti.pdf

function in the rectangle class. This conversion operator function returns a circle

object. By default conversion operators have the name and return type same as

the object type to which it converts to. Here the type of the object is circle and

hence the name of the operator function as well as the return type is circle.

10. How do I write code that allows to create only one instance of a class?

Ans: This is shown in following code snippet.

#include

class sample

{

static sample *ptr ;

private:

sample( )

{

}

public:

static sample* create( )

{

if ( ptr == NULL )

ptr = new sample ;

return ptr ;

}

} ;

sample *sample::ptr = NULL ;

void main( )

{

sample *a = sample::create( ) ;

sample *b = sample::create( ) ;

}

Here, the class sample contains a static data member ptr, which is a pointer

to the object of same class. The constructor is private which avoids us from

creating objects outside the class. A static member function called create( ) is

used to create an object of the class. In this function the condition is checked

whether or not ptr is NULL, if it is then an object is created dynamically and its

address collected in ptr is returned. If ptr is not NULL, then the same address is

returned. Thus, in main( ) on execution of the first statement one object of

sample gets created whereas on execution of second statement, b holds the

address of the first object. Thus, whatever number of times you call create( )

function, only one object of sample class will be available.

11. How do I write code to add functions, which would work as get and put

properties of a class?

Ans: This is shown in following code.

#include

Page 18: ti.pdf

class sample

{

int data ;

public:

__declspec ( property ( put = fun1, get = fun2 ) )

int x ;

void fun1 ( int i )

{

if ( i < 0 )

data = 0 ;

else

data = i ;

}

int fun2( )

{

return data ;

}

} ;

void main( )

{

sample a ;

a.x = -99 ;

cout << a.x ;

}

Here, the function fun1( ) of class sample is used to set the given integer value

into data, whereas fun2( ) returns the current value of data. To set these

functions as properties of a class we have given the statement as shown below:

__declspec ( property ( put = fun1, get = fun2 )) int x ;

As a result, the statement a.x = -99 ; would cause fun1( ) to get called to set

the value in data. On the other hand, the last statement would cause fun2( ) to

get called to return the value of data.

12. How do I write code to make an object work like a 2-D array?

Ans: Take a look at the following program.

#include

class emp

{

public :

int a[3][3] ;

emp( )

{

int c = 1 ;

for ( int i = 0 ; i <= 2 ; i++ )

{

Page 19: ti.pdf

for ( int j = 0 ; j <= 2 ; j++ )

{

a[i][j] = c ;

c++ ;

}

}

}

int* operator[] ( int i )

{

return a[i] ;

}

} ;

void main( )

{

emp e ;

cout << e[0][1] ;

}

The class emp has an overloaded operator [ ] function. It takes one argument an

integer representing an array index and returns an int pointer. The statement

cout << e[0][1] ; would get converted into a call to the overloaded [ ] function

as e.operator[ ] ( 0 ). 0 would get collected in i. The function would return a[i]

that represents the base address of the zeroeth row. Next the statement would

get expanded as base address of zeroeth row[1] that can be further expanded

as *( base address + 1 ). This gives us a value in zeroth row and first column.

13. What are formatting flags in ios class?

Ans: The ios class contains formatting flags that help users to format the stream

data. Formatting flags are a set of enum definitions. There are two types of

formatting flags:

On/Off flags

Flags that work in-group

The On/Off flags are turned on using the setf( ) function and are turned off using

the unsetf( ) function. To set the On/Off flags, the one argument setf( ) function

is used. The flags working in groups are set through the two-argument setf( )

function. For example, to left justify a string we can set the flag as,

cout.setf ( ios::left ) ;

cout << "KICIT Nagpur" ;

To remove the left justification for subsequent output we can say,

cout.unsetf ( ios::left ) ;

The flags that can be set/unset include skipws, showbase, showpoint,

uppercase, showpos, unitbuf and stdio. The flags that work in a group can have

only one of these flags set at a time.

14. What is the purpose of ios::basefield in the following statement?

cout.setf ( ios::hex, ios::basefield ) ;

Page 20: ti.pdf

Ans: This is an example of formatting flags that work in a group. There is a flag

for each numbering system (base) like decimal, octal and hexadecimal.

Collectively, these flags are referred to as basefield and are specified by

ios::basefield flag. We can have only one of these flags on at a time. If we set

the hex flag as setf ( ios::hex ) then we will set the hex bit but we won't clear

the dec bit resulting in undefined behavior. The solution is to call setf( ) as setf (

ios::hex, ios::basefield ). This call first clears all the bits and then sets the hex

bit.

15. Can we get the value of ios format flags?

Ans: Yes! The ios::flags( ) member function gives the value format flags. This

function takes no arguments and returns a long ( typedefed to fmtflags) that

contains the current format flags.

16. Is there any function that can skip certain number of characters present in

the input stream?

Ans: Yes! This can be done using cin::ignore( ) function. The prototype of this

function is as shown below:

istream& ignore ( int n = 1, int d =EOF ) ;

Sometimes it happens that some extra characters are left in the input stream

while taking the input such as, the ?\n? (Enter) character. This extra character is

then passed to the next input and may pose problem.

To get rid of such extra characters the cin::ignore( ) function is used. This is

equivalent to fflush ( stdin ) used in C language. This function ignores the first n

characters (if present) in the input stream, stops if delimiter d is encountered.

17. Write a program that implements a date class containing day, month and

year as data members. Implement assignment operator and copy constructor in

this class.

Ans: This is shown in following program:

#include

class date

{

private :

int day ;

int month ;

int year ;

public :

date ( int d = 0, int m = 0, int y = 0 )

{

day = d ;

month = m ;

year = y ;

}

Page 21: ti.pdf

// copy constructor

date ( date &d )

{

day = d.day ;

month = d.month ;

year = d.year ;

}

// an overloaded assignment operator

date operator = ( date d )

{

day = d.day ;

month = d.month ;

year = d.year ;

return d ;

}

void display( )

{

cout << day << "/" << month << "/" << year ;

}

} ;

void main( )

{

date d1 ( 25, 9, 1979 ) ;

date d2 = d1 ;

date d3 ;

d3 = d2 ;

d3.display( ) ;

}

18. When should I use unitbuf flag?

Ans: The unit buffering (unitbuf) flag should be turned on when we want to

ensure that each character is output as soon as it is inserted into an output

stream. The same can be done using unbuffered output but unit buffering

provides a better performance than the unbuffered output.

19.What are manipulators?

Ans: Manipulators are the instructions to the output stream to modify the output

in various ways. The manipulators provide a clean and easy way for formatted

output in comparison to the formatting flags of the ios class. When manipulators

are used, the formatting instructions are inserted directly into the stream.

Manipulators are of two types, those that take an argument and those that

don?t.

20. What is the difference between the manipulator and setf( ) function?

Ans: The difference between the manipulator and setf( ) function are as follows:

Page 22: ti.pdf

The setf( ) function is used to set the flags of the ios but manipulators directly

insert the formatting instructions into the stream. We can create user-defined

manipulators but setf( ) function uses data members of ios class only. The flags

put on through the setf( ) function can be put off through unsetf( ) function.

Such flexibility is not available with manipulators.

21. How do I get the current position of the file pointer?

Ans: We can get the current position of the file pointer by using the tellp( )

member function of ostream class or tellg( ) member function of istream class.

These functions return (in bytes) positions of put pointer and get pointer

respectively.

22. What are put and get pointers?

Ans: These are the long integers associated with the streams. The value present

in the put pointer specifies the byte number in the file from where next write

would take place in the file. The get pointer specifies the byte number in the file

from where the next reading should take place.

23. What do the nocreate and noreplace flag ensure when they are used for

opening a file?

Ans: nocreate and noreplace are file-opening modes. A bit in the ios class

defines these modes. The flag nocreate ensures that the file must exist before

opening it. On the other hand the flag noreplace ensures that while opening a

file for output it does not get overwritten with new one unless ate or app is set.

When the app flag is set then whatever we write gets appended to the existing

file. When ate flag is set we can start reading or writing at the end of existing

file.

24. What is the limitation of cin while taking input for character array?

Ans: To understand this consider following statements,

char str[5] ;

cin >> str ;

While entering the value for str if we enter more than 5 characters then there is

no provision in cin to check the array bounds. If the array overflows, it may be

dangerous. This can be avoided by using get( ) function. For example, consider

following statement,

cin.get ( str, 5 ) ;

On executing this statement if we enter more than 5 characters, then get( )

takes only first five characters and ignores rest of the characters. Some more

variations of get( ) are available, such as shown below:

get ( ch ) ? Extracts one character only

get ( str, n ) ? Extracts up to n characters into str

get ( str, DELIM ) ? Extracts characters into array str until specified delimiter

(such as '\n'). Leaves delimiting character in stream.

Page 23: ti.pdf

get ( str, n, DELIM ) ? Extracts characters into array str until n characters or

DELIM character, leaving delimiting character in stream.

25. What is the purpose of istream class?

Ans: The istream class performs activities specific to input. It is derived from the

ios class. The most commonly used member function of this class is the

overloaded >> operator which can extract values of all basic types. We can

extract even a string using this operator.

26. Would the following code work?

#include

void main( )

{

ostream o ;

o << "Dream. Then make it happen!" ;

}

Ans: No! This is because we cannot create an object of the ostream class since

its constructor and copy constructor are declared private.

27. Can we use this pointer inside static member function?

Ans: No! The this pointer cannot be used inside a static member function. This is

because a static member function is never called through an object.

28. What is strstream?

Ans: strstream is a type of input/output stream that works with the memory. It

allows using section of the memory as a stream object. These streams provide

the classes that can be used for storing the stream of bytes into memory. For

example, we can store integers, floats and strings as a stream of bytes. There

are several classes that implement this in-memory formatting. The class

ostrstream derived from ostream is used when output is to be sent to memory,

the class istrstream derived from istream is used when input is taken from

memory and strstream class derived from iostream is used for memory objects

that do both input and output. Ans: When we want to retrieve the streams of

bytes from memory we can use istrestream. The following example shows the

use of istrstream class.

#include

void main( )

{

int age ;

float salary ;

char name[50] ;

char str[] = "22 12004.50 K. Vishwanatth" ;

istrstream s ( str ) ;

s >> age >> salary >> name ;

cout << age << endl << salary << endl << name ;

Page 24: ti.pdf

cout << endl << s.rdbuf( ) ;

}

Here, s is the object of the class istrstream. When we are creating the object s,

the constructor of istrstream gets called that receives a pointer to the zero

terminated character array str. The statement s >> age >> salary >> name ;

extracts the age, salary and the name from the istrstream object s. However,

while extracting the name, only the first word of name gets extracted. The

balance is extracted using rdbuf( ).

29. When the constructor of a base class calls a virtual function, why doesn't the

override function of the derived class gets called?

Ans: While building an object of a derived class first the constructor of the base

class and then the constructor of the derived class gets called. The object is said

an immature object at the stage when the constructor of base class is called.

This object will be called a matured object after the execution of the constructor

of the derived class. Thus, if we call a virtual function when an object is still

immature, obviously, the virtual function of the base class would get called. This

is illustrated in the following example.

#include

class base

{

protected :

int i ;

public :

base ( int ii = 0 )

{

i = ii ;

show( ) ;

}

virtual void show( )

{

cout << "base's show( )" << endl ;

}

} ;

class derived : public base

{

private :

int j ;

public :

derived ( int ii, int jj = 0 ) : base ( ii )

{

j = jj ;

show( ) ;

}

void show( )

Page 25: ti.pdf

{

cout << "derived's show( )" << endl ;

}

} ;

void main( )

{

derived dobj ( 20, 5 ) ;

}

The output of this program would be:

base's show( )

derived's show( )

30. Can I have a reference as a data member of a class? If yes, then how do I

initialise it?

Ans: Yes, we can have a reference as a data member of a class. A reference as a

data member of a class is initialized in the initialization list of the constructor.

This is shown in following program.

#include

class sample

{

private :

int& i ;

public :

sample ( int& ii ) : i ( ii )

{

}

void show( )

{

cout << i << endl ;

}

} ;

void main( )

{

int j = 10 ;

sample s ( j ) ;

s.show( ) ;

}

Here, i refers to a variable j allocated on the stack. A point to note here is that

we cannot bind a reference to an object passed to the constructor as a value. If

we do so, then the reference i would refer to the function parameter (i.e.

parameter ii in the constructor), which would disappear as soon as the function

returns, thereby creating a situation of dangling reference.

31. Why does the following code fail?

Page 26: ti.pdf

#include

class sample

{

private :

char *str ;

public :

sample ( char *s )

{

strcpy ( str, s ) ;

}

~sample( )

{

delete str ;

}

} ;

void main( )

{

sample s1 ( "abc" ) ;

}

Ans: Here, through the destructor we are trying to deal locate memory, which

has been allocated statically. To remove an exception, add following statement

to the constructor.

sample ( char *s )

{

str = new char[strlen(s) + 1] ;

strcpy ( str, s ) ;

}

Here, first we have allocated memory of required size, which then would get deal

located through the destructor.

32. assert( ) macro...

We can use a macro called assert( ) to test for conditions that should not occur

in a code. This macro expands to an if statement. If test evaluates to 0, assert

prints an error message and calls abort to abort the program.

#include

#include

void main( )

{

int i ;

cout << "\nEnter an integer: " ;

cin >> i ;

assert ( i >= 0 ) ;

cout << i << endl ;

}

Page 27: ti.pdf

33. Why it is unsafe to deal locate the memory using free( ) if it has been

allocated using new?

Ans: This can be explained with the following example:

#include

class sample

{

int *p ;

public :

sample( )

{

p = new int ;

}

~sample( )

{

delete p ;

}

} ;

void main( )

{

sample *s1 = new sample ;

free ( s1 ) ;

sample *s2 = ( sample * ) malloc ( sizeof ( sample ) ) ;

delete s2 ;

}

The new operator allocates memory and calls the constructor. In the constructor

we have allocated memory on heap, which is pointed to by p. If we release the

object using the free( ) function the object would die but the memory allocated

in the constructor would leak. This is because free( ) being a C library function

does not call the destructor where we have deal located the memory.

As against this, if we allocate memory by calling malloc( ) the constructor would

not get called. Hence p holds a garbage address. Now if the memory is deal

located using delete, the destructor would get called where we have tried to

release the memory pointed to by p. Since p contains garbage this may result in

a runtime error.

34. Can we distribute function templates and class templates in object libraries?

Ans: No! We can compile a function template or a class template into object

code (.obj file). The code that contains a call to the function template or the

code that creates an object from a class template can get compiled. This is

because the compiler merely checks whether the call matches the declaration (in

case of function template) and whether the object definition matches class

declaration (in case of class template). Since the function template and the class

template definitions are not found, the compiler leaves it to the linker to restore

this. However, during linking, linker doesn't find the matching definitions for the

Page 28: ti.pdf

function call or a matching definition for object creation. In short the expanded

versions of templates are not found in the object library. Hence the linker

reports error.

35. What is the difference between an inspector and a mutator ?

Ans: An inspector is a member function that returns information about an

object's state (information stored in object's data members) without changing

the object's state. A mutator is a member function that changes the state of an

object. In the class Stack given below we have defined a mutator and an

inspector.

class Stack

{

public :

int pop( ) ;

int getcount( ) ;

}

In the above example, the function pop( ) removes top element of stack thereby

changing the state of an object. So, the function pop( ) is a mutator. The

function getcount( ) is an inspector because it simply counts the number of

elements in the stack without changing the stack.

36. Namespaces:

The C++ language provides a single global namespace. This can cause problems

with global name clashes. For instance, consider these two C++ header files:

// file1.h

float f ( float, int ) ;

class sample { ... } ;

// file2.h

class sample { ... } ;

With these definitions, it is impossible to use both header files in a single

program; the sample classes will clash. A namespace is a declarative region that

attaches an additional identifier to any names declared inside it. The additional

identifier thus avoids the possibility that a name will conflict with names declared

elsewhere in the program. It is possible to use the same name in separate

namespaces without conflict even if the names appear in the same translation

unit. As long as they appear in separate namespaces, each name will be unique

because of the addition of the namespace identifier. For example:

// file1.h

namespace file1

{

float f ( float, int ) ;

class sample { ... } ;

}

// file2.h

namespace file2

Page 29: ti.pdf

{

class sample { ... } ;

}

Now the class names will not clash because they become file1::sample and

file2::sample, respectively.

37. What would be the output of the following program?

#include

class user

{

int i ;

float f ;

char c ;

public :

void displaydata( )

{

cout << endl << i << endl << f << endl << c ;

}

} ;

void main( )

{

cout << sizeof ( user ) ;

user u1 ;

cout << endl << sizeof ( u1 ) ;

u1.displaydata( ) ;

}

Ans: The output of this program would be,

9 or 7

9 or 7

Garbage

Garbage

Garbage

Since the user class contains three elements, int, float and char its size would be

9 bytes (int-4, float-4, char-1) under Windows and 7 bytes (int-2, float-4, char-

1) under DOS. Second output is again the same because u1 is an object of the

class user. Finally three garbage values are printed out because i, f and c are not

initialized anywhere in the program.

Note that if you run this program you may not get the answer shown here. This

is because packing is done for an object in memory to increase the access

efficiency. For example, under DOS, the object would be aligned on a 2-byte

boundary. As a result, the size of the object would be reported as 6 bytes. Unlike

this, Windows being a 32-bit OS the object would be aligned on a 4-byte

boundary. Hence the size of the object would be reported as 12 bytes. To force

Page 30: ti.pdf

the alignment on a 1-byte boundary, write the following statement before the

class declaration.

#pragma pack ( 1 )

38. Write a program that will convert an integer pointer to an integer and vice-

versa.

Ans: The following program demonstrates this.

#include

void main( )

{

int i = 65000 ;

int *iptr = reinterpret_cast ( i ) ;

cout << endl << iptr ;

iptr++ ;

cout << endl << iptr ;

i = reinterpret_cast ( iptr ) ;

cout << endl << i ;

i++ ;

cout << endl << i ;

}

39. What is a const_cast?

Ans. The const_cast is used to convert a const to a non-const. This is shown in

the following

program:

#include

void main( )

{

const int a = 0 ;

int *ptr = ( int * ) &a ; //one way

ptr = const_cast_ ( &a ) ; //better way

}

Here, the address of the const variable a is assigned to the pointer to a non-

const variable. The const_cast is also used when we want to change the data

members of a class inside the const member functions. The following code

snippet shows this:

class sample

{

private:

int data;

public:

void func( ) const

{

(const_cast (this))->data = 70 ;

}

Page 31: ti.pdf

} ;

40. What is forward referencing and when should it be used?

Ans: Forward referencing is generally required when we make a class or a

function as a friend.

Consider following program:

class test

{

public:

friend void fun ( sample, test ) ;

} ;

class sample

{

public:

friend void fun ( sample, test ) ;

} ;

void fun ( sample s, test t )

{

// code

}

void main( )

{

sample s ;

test t ;

fun ( s, t ) ;

}

On compiling this program it gives error on the following statement of test class.

It gives an error that sample is undeclared identifier. friend void fun ( sample,

test );

This is so because the class sample is defined below the class test and we are

using it before its definition. To overcome this error we need to give forward

reference of the class sample before the definition of class test. The following

statement is the forward reference of class sample.

class sample ;

41. How would you give an alternate name to a namespace?

Ans: An alternate name given to namespace is called a namespace-alias.

namespace-alias is generally used to save the typing effort when the names of

namespaces are very long or complex. The following syntax is used to give an

alias to a namespace.

namespace myname = my_old_very_long_name ;

42. Using a smart pointer can we iterate through a container?

Ans: Yes. A container is a collection of elements or objects. It helps to properly

organize and store the data. Stacks, linked lists, arrays are examples of

Page 32: ti.pdf

containers. Following program shows how to iterate through a container using a

smart pointer.

#include

class smartpointer

{

private :

int *p ; // ordinary pointer

public :

smartpointer ( int n )

{

p = new int [ n ] ;

int *t = p ;

for ( int i = 0 ; i <= 9 ; i++ )

*t++ = i * i ;

}

int* operator ++ ( int )

{

return p++ ;

}

int operator * ( )

{

return *p ;

}

} ;

void main( )

{

smartpointer sp ( 10 ) ;

for ( int i = 0 ; i <= 9 ; i++ )

cout << *sp++ << endl ;

}

Here, sp is a smart pointer. When we say *sp, the operator * ( ) function gets

called. It returns the integer being pointed to by p. When we say sp++ the

operator ++ ( ) function gets called. It increments p to point to The next

element in the array and then returns the address of this new location.

43. Can objects read and write themselves?

Ans: Yes! This can be explained with the help of following example:

#include

#include

class employee

{

private :

char name [ 20 ] ;

int age ;

float salary ;

Page 33: ti.pdf

public :

void getdata( )

{

cout << "Enter name, age and salary of employee : " ;

cin >> name >> age >> salary ;

}

void store( )

{

ofstream file ;

file.open ( "EMPLOYEE.DAT", ios::app | ios::binary ) ;

file.write ( ( char * ) this, sizeof ( *this ) ) ;

file.close( ) ;

}

void retrieve ( int n )

{

ifstream file ;

file.open ( "EMPLOYEE.DAT", ios::binary ) ;

file.seekg ( n * sizeof ( employee ) ) ;

file.read ( ( char * ) this, sizeof ( *this ) ) ;

file.close( ) ;

}

void show( )

{

cout << "Name : " << name

<< endl << "Age : " << age

<< endl << "Salary :" << salary << endl ;

}

} ;

void main( )

{

employee e [ 5 ] ;

for ( int i = 0 ; i <= 4 ; i++ )

{

e [ i ].getdata( ) ;

e [ i ].store( ) ;

}

for ( i = 0 ; i <= 4 ; i++ )

{

e [ i ].retrieve ( i ) ;

e [ i ].show( ) ;

}

}

Here, employee is the class whose objects can write and read themselves. The

getdata( ) function has been used to get the data of employee and store it in the

data members name, age and salary. The store( ) function is used to write an

Page 34: ti.pdf

object to the file. In this function a file has been opened in append mode and

each time data of current object has been stored after the last record (if any) in

the file. Function retrieve( ) is used to get the data of a particular employee from

the file. This retrieved data has been stored in the data members name, age and

salary. Here this has been used to store data since it contains the address of the

current object. The function show( ) has been used to display the data of

employee.

44. Why is it necessary to use a reference in the argument to the copy

constructor?

Ans : If we pass the copy constructor the argument by value, its copy would get

constructed using the copy constructor. This means the copy constructor would

call itself to make this copy. This process would go on and on until the compiler

runs out of memory. This can be explained with the help of following example:

class sample

{

int i ;

public :

sample ( sample p )

{

i = p.i ;

}

} ;

void main( )

{

sample s ;

sample s1 ( s ) ;

}

While executing the statement sample s1 ( s ), the copy constructor would get

called. As the copy construct here accepts a value, the value of s would be

passed which would get collected in p. We can think of this statement as sample

p = s. Here p is getting created and initialized. Means again the copy constructor

would get called. This would result into recursive calls. Hence we must use a

reference as an argument in a copy constructor.

45.

46. Virtual Multiple Inheritance:

A class b is defined having member variable i. Suppose two classes d1 and d2

are derived from class b and a class multiple is derived from both d1 and d2. If

variable i is accessed from a member function of multiple then it gives error as

'member is ambiguous'. To avoid this error derive classes d1 and d2 with

modifier virtual as shown in the following program.

Page 35: ti.pdf

#include

class b

{

public :

int i ;

public :

fun( )

{

i = 0 ;

}

} ;

class d1 : virtual public b

{

public :

fun( )

{

i = 1 ;

}

} ;

class d2 : virtual public b

{

public :

fun( )

{

i = 2 ;

}

} ;

class multiple : public d1, public d2

{

public :

fun( )

{

i = 10 ;

}

} ;

void main( )

{

multiple d ;

d.fun( ) ;

cout << d.i ;

}

46. Can we use this pointer in a class specific, operator-overloading function for

new operator?

Ans: No! The this pointer is never passed to the overloaded operator new()

Page 36: ti.pdf

member function because this function gets called before the object is created.

Hence there is no question of the this pointer getting passed to operator new( ).

47. Can we allocate memory dynamically for a reference?

Ans: No! It is not possible to allocate memory dynamically for a reference. This

is because, when we create a reference, it gets tied with some variable of its

type. Now, if we try to allocate memory dynamically for a reference, it is not

possible to mention that to which variable the reference would get tied.

48. When should I overload new operator on a global basis or a class basis?

Ans: We overload operator new in our program, when we want to initialize a

data item or a class object at the same place where it has been allocated

memory. The following example shows how to overload new operator on global

basis.

#include

#include

void * operator new ( size_t s )

{

void *q = malloc ( s ) ;

return q ;

}

void main( )

{

int *p = new int ;

*p = 25 ;

cout << *p ;

}

When the operator new is overloaded on global basis it becomes impossible to

initialize the data members of a class as different classes may have different

types of data members. The following example shows how to overload new

operator on class-by-class basis.

#include

#include

class sample

{

int i ;

public :

void* operator new ( size_t s, int ii )

{

sample *q = ( sample * ) malloc ( s ) ;

q -> i = ii ;

return q ;

}

} ;

class sample1

Page 37: ti.pdf

{

float f ;

public :

void* operator new ( size_t s, float ff )

{

sample1 *q = ( sample1 * ) malloc ( s ) ;

q -> f = ff ;

return q ;

}

} ;

void main( )

{

sample *s = new ( 7 ) sample ;

sample1 *s1 = new ( 5.6f ) sample1 ;

}

Overloading the operator new on class-by-class basis makes it possible to

allocate memory for an object and initialize its data members at the same place.

49. How would you define a pointer to a data member of the type pointer to

pointer?

Ans: The following program demonstrates this...

#include

class sample

{

public :

sample ( int **pp )

{

p = pp ;

}

int **p ;

} ;

int **sample::*ptr = &sample::p ;

void main( )

{

int i = 9 ;

int *pi = &i ;

sample s ( &pi ) ;

cout << ** ( s.*ptr ) ;

}

Here, ptr is the pointer to data member p of class sample, which in turn is a

pointer pointing to an int.

50. How do I write a code to catch multiple types of exceptions in one single

catch block?

Ans: The following program demonstrates the use of a single catch block to

Page 38: ti.pdf

catch multiple exceptions.

#include

class test

{

} ;

class sample

{

public :

void fun1( )

{

throw 99 ;

}

void fun2( )

{

throw 3.14f ;

}

void fun3( )

{

throw "error" ;

}

void fun4( )

{

throw test( ) ;

}

} ;

void main( )

{

try

{

sample s ;

s.fun4( ) ;

s.fun1( ) ;

s.fun2( ) ;

s.fun3( ) ;

}

catch ( ... )

{

cout << "strange" ;

}

}

Here, different types of exceptions are thrown by the member functions of the

class sample. While catching the exception instead of four different catch blocks

we can as well define one single catch block. Note the syntax for defining the

catch block, where we have used three dots (?) in the formal parameter list. This

indicates that any thrown exception should get caught in the same catch block.

Page 39: ti.pdf

When the exception is thrown from the fun4( ) control reaches the catch block,

ignoring the rest of the calls.

51. Can we return an error value from the constructor of a class?

Ans: No. We cannot return any error value from the constructor, as the

constructor doesn't have any return type. However, by throwing an exception we

can pass value to catch block. This is shown in the following example:

#include

class sample

{

public :

sample ( int i )

{

if ( i == 0 )

throw "error" ;

}

} ;

void main( )

{

try

{

sample s ( 0 ) ;

}

catch ( char * str )

{

cout << str ;

}

}

In this program, the statement throw "error" ; would throw an exception when

an object s of the class sample would get created. The catch block would collect

the string error.

52. How do I define the member function of a template class, which has to be

defined outside the template class. The function receives an object of its own

class as a parameter and returns the value of the same type.

Ans: The following example shows how we can define such a function.

sample sample::fun ( sample s )

{

// code

}

Here, the first sample indicates the return type of the function and the next

sample is used for the scope of function.

53. How name mangling can be prevented?

Ans: To avoid name mangling the function should be declared with an extern "C"

Page 40: ti.pdf

attribute. Functions declared as extern "C" are treated as C-style functions.

Hence the compiler does not mangle them. The following code snippet shows

how to declare such a function.

#include

extern "C" void display( )

{

cout << "See the effect of C in C++ " ;

}

void main( )

{

display( ) ;

}

54. Can we allocate memory dynamically for a reference?

Ans: No, it is not possible to allocate memory dynamically for a reference. A

reference is initialized at the time of creation. Trying to allocate memory

dynamically for a reference creates a problem in initializing it. Thus, the compiler

does not allow us to dynamically allocate the memory for references.

55. What is RTTI?

Ans: RTTI stands for 'Run Time Type Information'. We use virtual function

mechanism where we can call derived class's member functions using base

class's pointer. However, many times we wish to know the exact type of the

object. We can know the type of the object using RTTI. A function that returns

the type of the object is known as RTTI functions. C++ supports two ways to

obtain information about the object's class at run time, they are typeid( )

operator and dynamic_cast operator.

56. What is Data Conversion?

Ans: Assignments between types whether they are basic or user-defined, are

handled by the compiler. If the variables are of different basic types compiler

calls a special routine to convert the value. But if we want to convert between

user-defined data type and basic types we have to write conversion routine

ourselves. A conversion routine to convert user-defined data type string to

integer is shown below:

class string

{

private :

char str[20] ;

public :

string( )

{

}

string ( char *s )

{

Page 41: ti.pdf

strcpy ( str, s ) ;

}

operator int( )

{

return 123 ; // Write logic to convert string to integer

}

} ;

main( )

{

string s2 = "123" ;

int i1 = int ( s2 ) ;

cout << endl << i1 ;

}

57. How to obtain type information using typeid( ) operator?

Ans: typeid( ) operator takes an object, a reference or a pointer and returns its

type. Following program shows how to use the typeid( ) operator.

#include

#include

class Base

{

public :

virtual void show( )

{

}

};

class Der1 : public Base

{

} ;

void main( )

{

Base *b1 ;

cout << endl << typeid ( b1 ).name( ) ;

Der1 d1 ;

b1 = &d1 ;

cout << endl << typeid ( *b1 ).name( ) ;

cout << endl << typeid ( 12 ).name( ) << endl << typeid ( 12.5 ).name( ) ;

}

The output of this program will be

Base*

Der1

int

double

RTTI operators must be used for polymorphic class (class having virtual

Page 42: ti.pdf

function) only. For non-polymorphic class static type information is returned.

58. How to use RTTI with class templates?

Ans: Templates can generate different classes. We may wish to get the type of

class, which we are working in. The following program shows how to use RTTI

operator typeid( ) with class template.

#include

#include

template

class base

{

public :

base( )

{

cout << typeid ( *this ).name( ) << "Constructor" << endl ;

}

T add ( T a, T b )

{

return a + b ;

}

~base( )

{

cout << typeid ( *this ).name( ) << "Destructor" << endl ;

}

} ;

void main( )

{

base b1 ;

cout << b1.add ( 10, 20 ) << endl ;

base b2 ;

cout << b2.add ( 5.5, 10.5 ) << endl ;

}

59. We can use following C++ operators for typecasting. static_cast is used for

castless conversions, narrowing conversions, conversion from void* and implicit

type conversions. const_cast is used to convert a const to a non-const.

reinterpret_cast is used to assign one kind of pointer to another.

60. What will be the output of the following program?

#include

class A

{

public :

A( )

{

Page 43: ti.pdf

cout << "Reached in Constructor\n" ;

}

} ;

void main( )

{

A a( ) ;

A b ;

}

Output : Reached in Constructor

Constructor gets called only once when the object b is created. When the

statement A a( ) ; gets executed constructor does not get called. This is because

compiler takes this statement as a prototype declaration of function a( ) that

returns an object of class A. However, if we pass arguments like

A a ( 10 ) ;

Compiler would search for one argument constructor and if not found would flash

an error.

61. What is a container?

Ans: A container is an object that holds other objects. Various collection classes

like List, Hash Table, AbstractArray, etc. are the examples of containers. We can

use the classes to hold objects of any derived classes. The containers provide

various methods using which we can get the number of objects stored in the

container and iterate through the objects stored in it.

62. Function template overloading

One can declare several function templates with the same name and even

declare a combination of function templates and ordinary functions with the

same name. When an overloaded function is called, overload resolution is

necessary to find the right function or template function to invoke.

For example:

template < class T > T sqrt ( T ) ;

template < class T > complex < T > sqrt ( complex < T > ) ;double sqrt (

double ) ;

void f ( complex < double > z )

{

sqrt ( 2 ) ; // sqrt < int > ( int )

sqrt ( 2.0 ) ; // sqrt ( double )

sqrt ( z ) ; // sqrt < complex < double > ( complex < double > )

}

In the same way that a template function is a generalization of the notion of a

function, the rules for resolution in the presence of function templates are

generalizations of the function overload resolution rules. Basically, for each

template we find the specialization that is best for the set of function arguments.

Then we apply the usual function overload resolution rules to these

specializations and all ordinary functions.

Page 44: ti.pdf

63. Exception Handling in C++

In C++ we can handle run-time errors generated by c++ classes by using three

new keywords: throw, catch, and try. We also have to create an exception class.

If during the course of execution of a member function of this class a run-time

error occurs, then this member function informs the application that an error has

occurred. This process of informing is called 'throwing' an exception. The

following code shows how to deal with exception handling.

class sample

{

public :

class errorclass

{

} ;

void fun( )

{

if ( some error occurs )

throw errorclass( ) // throws exception

}

} ;

//application

void main( )

{

try

{

sample s ;

s.fun( ) ;

}

catch ( sample::errorclass )

{

// do something about the error

}

}

64. Consider the following code:

#include

class base

{

public :

int data ;

} ;

class d1 : public base

{

} ;

class d2 : public base

Page 45: ti.pdf

{

} ;

class der : public d1, public d2

{

public :

void showdata( )

{

cout << data ;

}

} ;

void main( )

{

der d ;

d.showdata( ) ;

}

If you run this program it is bound to give you errors. This is because of the

rules of inheritance:

1. Each base class not specified virtual will have its own sub-object representing

it. In the above program, if we create object of d1 it will have a sub-object of

class base containing a data member data. If we create an object of class der it

will have sub-objects of classes d1 and d2 and both the sub-objects will refer to

a separate copy of data. Hence, to access data from class der we will have to

mention the class name. For example, d1::data or d2::data.

2. If we want that only one sub-object should exist we must use the concept of

virtual base class. The single object of this will represent every base class of

given name that is specified to be virtual class. After making d1 and d2 as

virtual base class if we create an object of der only one sub-object would exist

and so accessing data would no longer give us errors.

65. How to declare a pointer to a member function?

Ans: Suppose, I wish to declare a pointer to a member function that receives an

int and returns an int. I will have to declare it as int (A::* ) ( int ). Following is

an example.

#include

class A

{

public :

int fun ( int f )

{

cout << "in fun\n" ;

return f * f ;

}

} ;

typedef int ( A:: *pfun ) ( int ) ;

void main( )

Page 46: ti.pdf

{

pfun p = A::fun ;

A a ;

int s = ( a.*p ) ( 6 ) ;

cout << s ;

}

66. What is the disadvantage of a template function?

Ans: A template function cannot be distributed in the obj form. This is because,

with which parameters the template function is going to be called is decided at

the run time only. Therefore an obj form of a template function cannot be made

by merely compiling it.

67. How to declare a pointer to the data members of a class?

Ans: Following program shows how to declare a pointer to non-function

members of a class.

#include

class A

{

public :

int a ;

void print( )

{

cout << a ;

}

} ;

void main( )

{

int A::*pa = &A::a ;

A obj ;

obj.*pa = 20 ;

obj.print( ) ;

}

Here, we have initialised the data member a using the pointer pa.

68. How to allocate memory for a multidimensional array dynamically?

Ans: Many times we need to allocate memory for a multidimensional array

dynamically. Because of complexity of pointers many find this difficult. Following

program allocates memory for a 3 x 3 array dynamically, copies contents of a 3

x 3 array in it and prints the contents using the pointer.

#include

#include

int a[ ][3] = {

1, 2, 3,

4, 5, 6,

Page 47: ti.pdf

7, 8, 9

} ;

void main( )

{

int **p ;

p = new int *[3] ;

for ( int i = 0 ; i < 3 ; i++ )

p[i] = new int[3] ;

for ( i = 0 ; i < 3 ; i++ )

for ( int j = 0 ; j < 3 ; j++ )

p[i][j] = a[i][j] ;

for ( i = 0 ; i < 3 ; i++ )

{

for ( j = 0 ; j < 3 ; j++ )

cout << p[i][j] ;

cout << "\n" ;

}

}

69. When should we use the :: ( scope resolution ) operator to invoke the virtual

functions?

Ans: Generally, :: operator is used to call a virtual function from constructor or

destructor. This is because, if we call a virtual function from base class

constructor or destructor the virtual function of the base class would get called

even if the object being constructed or destroyed would be the object of the

derived class. Thus, whenever we want to bypass the dynamic binding

mechanism we must use the :: operator to call a virtual function.

70. How do I use operators .* and ->* in a program?

Ans: The following code snippet demonstrates the use of .* and ->* operators.

#include

class sample

{

public :

int i ;

void fun( )

{

cout << "fun" << endl ;

}

} ;

void ( sample::*pf )( ) = &sample::fun ;

int sample::*pdm = &sample::i ;

void main( )

{

sample s ;

Page 48: ti.pdf

sample *p = new sample ;

( s .* pf )( ) ;

( p ->* pf )( ) ;

s .* pdm = 1 ;

p ->* pdm = 2 ;

cout << s .* pdm << endl ;

cout << p ->* pdm << endl ;

}

In the above program pf is a pointer to a function fun( ) of class sample, and

pdm is a pointer to a data member i of the same class sample. The object s of

the class sample is created statically. Next, p is a pointer to an object created

dynamically. The using the operator .* and ->* the member functions are called

and also the public data member is accessed.

71. What happens when we add an int value to a user defined type of object?

Ans: Whenever an int value is added to an object of user defined type, the

object would search for an overloaded operator int( ). This operator must be

defined in such a way that it always returns an int value. However, we need not

specify the return type as on doing so the compiler flashes an error.

#include

class sample

{

int i ;

public :

sample ( )

{

i = 10 ;

}

operator int( )

{

return this -> i ;

}

} ;

void main( )

{

sample s ;

int i ;

i = s + 10 ;

cout << i ;

}

In the above program on adding 10 to an object s, the value of i would become

20.

72. Can we have a reference to an array?

Ans: Yes, we can have a reference to an array.

Page 49: ti.pdf

int a[ ] = { 8, 2, 12, 9 } ;

int ( &r ) [ 4 ] = a ; // reference to an array

Here, r is a reference to an array of four elements. We can even print the

elements of array with the help of reference. This is shown in the following code

segment:

for ( int i = 0 ; i < 4 ; i++ )

cout << r [i] << endl ;

73. When friend function becomes indispensable...

Ans: Consider the following program.

#include

class distance

{

private :

int feet ;

public :

distance( )

{

feet = 0 ;

}

distance ( int f )

{

feet = f ;

}

distance operator + ( distance x )

{

int f = feet + x.feet ;

return distance ( f ) ;

}

} ;

void main( )

{

distance d1 ( 20 ), d2, d3 ;

d2 = d1 + 10 ;

d3 = 10 + d2 ;

}

If you run this program it is bound to give errors. The error lies in the statement

d3 = 10 + d2 ; We may think that since we have overloaded + operator this

statement would add 10 to d2. But this does not happen. This is because the

specified statement will get converted as d3 = 10.operator+ ( d2 ) ; This means

that this statement should call the operator+( ) function that takes an object of

distance class as parameter written in the float class, which is not possible. The

solution is to write operator+( ) as a 'friend' function. Declare operator+ function

in distance class as given below:

friend distance operator + ( distance x1, distance x2 ) ;

Page 50: ti.pdf

and define it outside the class as shown below:

distance operator + ( distance x1, distance x2 )

{

int f = x1.feet + x2.feet ;

return distance ( f ) ;

}

When compiler would see that the 'friend' operator+( ) function is available it

would convert the statement d3 = 10 + d2 as operator+ (10, d2 ). Now since 10

is passed as a parameter not as a calling object there would be no error. Thus in

such cases 'friend' function becomes indispensable.

74. How to use a memory as a stream?

Ans: Suppose, details of an employee such as name, designation, age, etc. are

stored in different types of variables. Now, if we wish to concatenate these

details in a character array we will have to use various string manipulation

functions like strcpy( ) and strcat( ). Instead of using these functions we can use

more easy and clean way to gather the details in the char array in the form of

streams. We can declare the memory allocated for the array as stream and use

the << operator to store variables having different types in this memory.

Following program shows how to achieve this.

#include

void main( )

{

char buff [50] ;

char str[ ] = "Sanjay" ;

char desig[ ] = "Manager" ;

char jd[ ] = "27/12/1995" ;

int age = 35 ;

ostrstream o ( buff, sizeof ( buff ) ) ;

o << str << endl << desig << endl << jd << endl << age << ends ;

cout << buff ;

}

As shown in the program we can also use the manipulators and formatting flags.

The output of this program will be:

Sanjay

Manager

27/12/1995

35

75. How would you declare and initialize reference to a data member?

Ans: Sometimes we may need to declare a data member, which is a reference to

another data member of the class as shown below:

class A

{

public :

Page 51: ti.pdf

char *p ;

char *&rp ;

} ;

We can't initialize a reference to a data member at the time of declaration. It

should be initialized using 'member wise initialization as shown below.

#include

class A

{

public :

char *p ;

char *&rp ;

A( ) : rp ( p )

{

p = "" ;

}

A ( char *s ) : rp ( p )

{

p = s ;

}

} ;

void main( )

{

A a ( "abcd" ) ;

cout << a.rp ;

}

76. iostream library has made it easy to read data from various input devices

and write data to the output devices. The following program shows how to print

a disk file 'data.dat' on the printer using stream classes. Every hardware device

has a familiar name given by the operating system. The printer is generally

connected to the first parallel port. So, the file name for the printer should be

PRN or lpt1.

#include

void main( )

{

ifstream i ( "data.dat" ) ;

ofstream o ;

o.open ( "PRN" ) ;

char ch ;

while ( 1 )

{

i.get ( ch ) ;

if ( i.eof( ) )

break ;

o.put ( ch ) ;

Page 52: ti.pdf

}

o.put ( '\x0C' ) ;

}

77. We know that a destructor is automatically called when an object of a class

goes out of scope. There is another case where destructor is called

automatically. If an object is created in a try block and an exception is thrown

after the object is created, then the destructor is called automatically.

78. Can a function call be at the left hand side of the assignment operator?

Ans: Yes. Following program shows how it is possible.

#include

class ref

{

private :

struct data

{

int a ; char *p ;

} d1, d2 ;

public :

data &set ( )

{

return d1 ;

}

data &get ( )

{

cin >> d2.a >> d2.p ;

return d2 ;

}

} ;

void main( )

{

ref r ;

r.set( ) = r.get( ) ;

r.print( ) ;

}

In the above program the functions get( ) and set( ) both return a reference to

the object of the structure data. We have assigned the reference returned by

get( ) to the reference returned by set( ) function. That is, we are assigning d2

to d1. So, the values of d2 would get assigned to d1. You can check this out by

printing the values of d1.

79. If a class contains a virtual function a pointer called VPTR is created. This

VPTR becomes a part of every object of that class. The first two bytes (in DOS)

are occupied by VPTR. We can prove this by displaying the first two bytes of

Page 53: ti.pdf

memory allocated for the objects. Following program shows how this can be

achieved.

#include

class vir

{

public :

virtual void f( )

{

}

} ;

void main( )

{

vir v, v1 ;

int *p1 = ( int* ) &v ;

int *p2 = ( int* ) &v1 ;

cout << endl << *p1 << " " << *p2 ;

}

80. Exception Handling in C++

In C++ we can handle run-time errors generated by c++ classes by using three

new keywords: throw, catch, and try. We also have to create an exception class.

If during the course of execution of a member function of this class a run-time

error occurs, then this member function informs the application that an error has

occurred. This process of informing is called 'throwing' an exception. The

following code shows how to deal with exception handling.

class sample

{

public :

class errorclass

{

} ;

void fun( )

{

if ( some error occurs )

throw errorclass( ) // throws exception

}

} ;

//application

void main( )

{

try

{

sample s ;

s.fun( ) ;

}

Page 54: ti.pdf

catch ( sample::errorclass )

{

// do something about the error

}

}

81. Accessing a private data member from a different Object...Different objects

of the same class can access each other's members, even if these members are

private. For example:

#include < iostream.h >

class sample

{

float f ;

public :

sample ( float ff )

{

f = ff ;

}

void fun ( sample* objptr )

{

objptr -> n = 0 ;

cout << "Value of this objects f is : " << f << endl ;

cout << "Value of other objects f" << objptr -> n << endl ;

} // another object's private member!

} ;

void main( )

{

sample s1 ( 6.5f ) , s2 ( 2.5f ) ;

s1.f ( &s2 ) ; // s1 changes s2's n

}

Typically, this coding style should be avoided. However, you should be aware

that private members of an object can be changed by another object of the

same

type. Therefore, in certain special conditions, this coding style may be useful.

82. Can you access private data members of a class from out side the class?

Ans: Yes. This program shows how.

#include

class emp

private :

int i ;

public :

emp( )

{

i = 10 ;

Page 55: ti.pdf

}

} ;

void main( )

emp *p = new emp ;

int *pi = (int*) p ;

cout << *pi ;

*pi = 20 ;

cout << *pi ;

}

The pointer to the class is typecasted in an integer pointer. With the help of this

pointer private data member 'i' is accessed in main( ).

83. Why creating array of references is not possible?

Ans: The array name always refers or points to the zeroeth element. If array is

of references then the array name would point to the zeroeth element which

happens to be a reference. Creating pointer to a reference is not valid. So,

creating array of references too is not possible.

84. How do I call a virtual function of a class using a pointer to a function ?

Ans :

#include

class Cvirtual

{

public :

virtual float vfun( )

{

cout << "from vfun" << endl ;

return 7.03f ;

}

} ;

void main( )

{

Cvirtual obj ;

int **p = ( int ** ) &obj ;

float ( *pf1 ) ( ) ;

pf1 = ( float ( * ) ( ) ) **p ;

float f = ( *pf1 ) ( ) ;

cout << "return val = " << f << endl ;

}

In the above program class Cvirtual consists of a virtual function vfun(). In

variable p we have stored the address of an object of class Cvirtual. While doing

so, we have type casted the address of obj to int **, because obj holds a hidden

data member called vptr, which in turn holds the address of virtual function

vfun( ). In pf1, a pointer to a function, we are collecting the address of the

virtual function vfun( ). Thus the value returned by vfun( ) would then get

Page 56: ti.pdf

collected in f.

85. Why an overloaded new operator defined in a class is static?

Ans: An overloaded new function is by default static even if it is not declared so.

This is because non-static member functions can be called through an object

only. But when an overloaded new operator function gets called the object

doesn't stand created. Since new operator function itself is responsible for

creating the object. Hence to be able to call a function without an object, the

function must be static.

86. What is a pure virtual destructor?

Ans: Like a pure virtual function we can also have a pure virtual destructor. If a

base class contains a pure virtual destructor it becomes necessary for the

derived classes to implement the destructor. An ordinary pure virtual function

does not have a body but pure virtual destructor must have a body. This is

because all the destructors in the hierarchy of inheritance are always called as a

part of destruction.

87. When we are required to find offset of an element within a structure? or,

how do we call the function of an outer class from a function in the inner class?

(The inner class is nested in the outer class)

Ans:

#include

class outer

{

int i ;

float f ;

public :

class inner

{

public :

infunc( )

{

outer *pout ;

pout = (outer*) this - ( size_t ) &( ( ( outer* ) 0 ) -> in ) ;

pout -> outfunc( ) ;

}

} ;

inner in ;

outfunc( )

{

cout << "in outer class's function" ;

}

} ;

void main( )

Page 57: ti.pdf

{

outer out ;

out.in.infunc( )

}

In the above example we are calling outer::outfunc( ) from inner::infunc(). To

call outfunc( ) we need a pointer to the outer class. To get the pointer we have

subtracted offset of the inner class's object (base address of outer class's object

- address of inner class's object) from address of inner class's object.

88. void f ( float n, int i = 10 ) ;

void f ( float a ) ;

void main( )

{

f ( 12.6 ) ;

}

void f ( float n, int i )

{

}

void f ( float n )

{

}

The above program results in an error (ambiguous call) since without the default

argument the two functions have arguments that are matching in number, order

and type.

89. Some programs need to exercise precise control over the memory areas

where data is placed. For example, suppose we wish to read the contents of the

boot sector into a structure. For this the byte arrangement of the structure

elements must match the arrangement of various fields in the boot sector of the

disk.

The #pragma pack directives offer a way to fulfill this requirement. The

#pragma pack directive specifies packing alignment for structure and union

members. The #pragma takes effect at the first structure or union declaration

after the #pragma is seen. Consider the following structure:

#pragma pack (1)

struct emp

{

int a ;

float s ;

char ch ;

} ;

#pragma pack( )

Here, #pragma pack ( 1 ) lets each structure element to begin on a 1-byte

boundary. Hence the size of the structure will be 9. (int - 4, float - 4, char - 1).

If we use #pragma pack ( 2 ) each structure element can begin on a 2-byte

Page 58: ti.pdf

boundary. Hence the size of the structure will be 10. (int - 4, float - 4, char - 2).

90. How to restrict a friend class's access to the private data members?

Ans: If we declare a class as a friend of our class the friend class can access the

private data members of our class. However, if we want we can restrict this

access to some selective functions of the class. Following program shows how to

achieve this:

#include

class X

{

public :

void print ( class Z &z ) ;

} ;

class Z

{

private :

int i ;

public :

Z ( int ii )

{

i = ii ;

}

friend X::print ( class Z &z ) ;

} ;

void X::print ( Z &z1 )

{

cout << z1.i ;

}

main( )

{

Z z ( 10 ) ;

X x ;

x.print ( 10 ) ;

}

In the above program only the X::print( ) function can access the private data

members of class Z.

91. What is name mangling?

Ans: C++ enables you to assign the same function name to more than one

functions but with different parameter types. This feature is called function

overloading. But when we give several functions the same name, how does the

compiler decide which particular function is to be called? C++ solves this

problem by applying a process called name mangling. Name mangling applies a

decorated name to the function. The mangled name includes tokens that identify

the functions' return type and the types of its arguments.

Page 59: ti.pdf

class test

{

public :

void fun ( int a, char b ) ;

void fun ( char *c, float y ) ;

} ;

void main( )

{

test s1 ;

s1.fun ( 65, 'A' ) ;

s1.fun ( "Anil", 5.5f ) ;

}

At the time of resolving the calls to fun( ) function the linker would not be able

to find the definition of the overloaded function fun( ) and it would report an

error. If you look at these errors you will see the mangled names like,

(?fun@test@@QAEXJJ@Z) and (?fun@test@@QAEXMM@Z). Note that different

compilers may use different name mangling schemes.

92. How would you call a C function from C++ code?

Ans: Using extern "C".

The function prototype must be preceded by extern "C". More than one C

functions can be grouped inside braces as shown below:

extern "C"

{

void f( ) ;

void f1( ) ;

}

// In cfunc.c

#include

void f( )

{

printf ( "in f( )" ) ;

}

// In func.cpp

#include

extern "C" void f( ) ;

void main( )

{

f( ) ;

}

Ensure that both .c and .cpp files are in the same project.

93. How to restrict the number of floating-point digits displayed ?

Ans: When we display floating-point values, we can use the setprecision

manipulator to specify the desired number of digits to the right of the decimal

Page 60: ti.pdf

point.

For example,

cout << setprecision ( 3 ) << 12.34678 ;

This statement would give the output as 12.347.

94. What is a wild pointer ?

Ans: A wild pointer is the one that points to a garbage value. For example, an

uninitialized pointer that contains garbage value or a pointer that refers to

something that no longer exists.

95. How friend function helps to increase the versatility of overloaded operators?

Ans: Consider the following statement,

s2 = s1 * 2 ;

where, s1 and s2 are objects of sample class. This statement would work if the

overloaded operator * ( sample s ) or conversion function is provided in the

class. Internally this statement would get converted to,

s2 = s1.operator * ( 2 ) ;

The function materializes because it is called with an object s1. The this pointer

of s1 would get passed implicitly. To collect 2 in s, first the compiler would call

the one-argument constructor, then it would build a nameless object, which then

would get collected in s. However, if we write the above statement as,

s2 = 2 * s1 ;

then it won't compile. This is because the call now would get treated as,

s2 = 2.operator * ( s1 ) ;

and 2 is not an object. The friend function helps to get rid of such a situation.

This is shown in the following program.

#include

class sample

{

private :

int i ;

public :

sample ( int ii = 0 )

{

i = ii ;

}

void showdata( )

{

cout << i << endl ;

}

friend sample operator * ( sample, sample ) ;

} ;

sample operator * ( sample s1, sample s2 )

{

sample temp ;

Page 61: ti.pdf

temp.i = s1.i * s2.i ;

return ( temp ) ;

}

void main( )

{

sample s1 ( 10 ), s2 ;

s2 = s1 * 2 ;

s2.showdata( ) ;

s1 = 2 * s2 ;

s1.showdata( ) ;

}

Here the operator *( ) function takes two parameters. This is because the

operator function is no longer a member function of the class. It is a friend of

the class sample. Thus the statement s2 = s1 * 2 ; would not take the form

s2.operator * ( 2 ). This example shows that using friend permits the overloaded

operators to be more versatile.

96. What is a const_cast?

Ans: The const_cast is used to convert a const to a non-const. This is shown in

the following program.

#include

void main( )

{

const int a = 0 ;

int *ptr = ( int * ) &a ; // one way

ptr = const_cast ( &a ) ; // better way

}

Here, the address of the const variable a is assigned to the pointer to a non-

const variable. The const_cast is also used when we want to change the data

members of a class inside the const member functions. The following code

snippet shows how to do this.

class sample

{

private :

int data ;

public :

void fun( ) const

{

( const_cast ( this ) ) -> data = 70 ;

}

} ;

97. Using a smart pointer we can make an object appear like a pointer.

If a class overloads the operator -> then any object of that class can appear like

a pointer when the operator -> ( ) is called. The following program illustrates

Page 62: ti.pdf

this.

#include

class test

{

public :

void fun( )

{

cout << "fun of smart pointer" ;

}

} ;

class smartpointer

{

test t ;

public :

test* operator ->( )

{

return &t ;

}

} ;

void main( )

{

smartpointer sp ;

sp -> fun( ) ;

}

The beauty of overloading operator -> is that even though sp is an object we

can make it work like a pointer. The operator -> ( ) returns the address of the

object of the type test. Using this address of the test object the function fun( ) of

the class test gets called. Thus even though fun( ) is not a member of

smartpointer class we can still call it using sp.

98. Can we apply delete on this pointer inside a member function?

Ans : Yes! If the member function of a class is called using a pointer to an

object, which is allocated dynamically, the object would get deleted. But if the

member function is called using the object, which is allocated statically, then a

runtime error would occur. This is because we cannot call delete on statically

allocated objects. This is illustrated in the following example.

class sample

{

private :

int i ;

public :

void fun( )

{

delete this ;

}

Page 63: ti.pdf

} ;

void main( )

{

sample *s = new sample ;

s -> fun( ) ; // no error

sample s1 ;

s1.fun( ) ; // would throw a runtime error

}

99. Why can't data members of a class be initialized at the time of declaration as

given in the following code?

class emp

{

private :

int j = 10 ;

} ;

Ans: Memory for data members of a class is allocated only when object of

that class is created. One cannot store data in a memory location, which does

not exist at all. Therefore initialization at the time of declaration is not possible.

100. Why in a copy constructor an object is collected in a reference to object as

shown below?

#include

class emp

{

public :

emp( )

{

}

emp ( emp& )

{

cout << "copy" ;

}

} ;

void main( )

{

emp e ;

emp e1 = e ;

}

Ans: A copy constructor is called when an object is created and initialised at the

same time. It is also called when object is passed to a function. So, If we pass

the object to copy constructor copy constructor would get called recursively.

Thus it will stuck up in an infinite loop.

Page 64: ti.pdf

101. What is Early Binding and Dynamic Binding?

Ans: The term binding refers to the connection between a function call and the

actual code executed as a result of the call. Early Binding: If which function is to

be called is known at the compile-time it is known as static or early binding.

Dynamic Binding: If which function is to be called is decided at run time it is

called as late or dynamic binding. Dynamic binding is so called because the

actual function called at run-time depends on the contents of the pointer. For

example, call to virtual functions, call to functions to be linked from dlls use late

binding.

102. When can we use the function ostrstream::freeze( )?

Ans: While outputting data to memory in the in-memory formatting we need to

create an object of the class ostrstream. The constructor of ostrstream receives

the address of the buffer but if we want that the ostrstream object should do its

own memory management then we need to create an ostrstream object with no

constructor arguments as:

ostrstream s ;

Now s will do its own memory management. We can stuff as many bytes into it

as we want. If it falls short of memory, it will allocate more memory. If it cannot,

it may even move the block of memory. When the object goes out of scope, the

heap storage is automatically released. This is a more flexible approach if we do

not know how much space we are going to need. If we want the physical

address of the memory used by s we can obtain it by calling the str( ) member

function:

char* p = s.str( ) ;

Once str( ) has been called then the block of memory allocated by ostrstream

cannot be moved. This is logical. It can't move the block since we are now

expecting it to be at a particular location. In such a case we say that ostrstream

has freezed itself. Once frozen we can't add any more characters to it. Adding

characters to a frozen ostrstream results in undefined behavior. In addition, the

ostrstream is no longer responsible for cleaning up the storage.

Page 65: ti.pdf

. square root(x)/3 = 243/x value of x ???? ans. 81

2. qn from loss and gain what is the net profit ? ans. 25 percent

3.if + sign is represented as /, - as *(into,not power do not confuse) , * as - and / ! as + then what will be the value of (480+20*20)-16 /12 ??? ans. 76

4. which of the following will come next in the series IAR, GET , EIV , COX ans. AUZ

5. B is in DOUBT in the same way H is in choices.... HOPE , HOUSE , HONEST , INHIBIT ans. HOUSE(confirm it i am not sure)

6. if P+Q represents P is the sister of Q, P-Q represents P is the father of Q and P*Q represents P is the brother of Q then which will represent K is the aunt of N

ans. K+Q-M*N

7.In a class puspa ranks 8th from top and 28th from bottom.how many students are there in the class????? ans. 35

8. 23 percent of a no is 230, 4/23rd of the number is ?????? ans.none of these

9. sum of a number and its one third = 60, 4/5th

of the number is ????? ans. 36

10.if A to Z is written in the reverse order which is the 5th letter to the right of the 11th letter from the left???? ans . K

11.In a rectangle length = twice that of breadth , cost of! grounding is 60 rupees per meter,total cost is 3600/- what is the length in meter???????? ans. 20

12.qn on sequences

which will come next??

Page 66: ti.pdf

11 13 17 23 31 ? 53 67 ans. 41 13. 18 27 64 125 ? 343 512 ans. 216 14. 2 3 10 15 26 ? 50 63 ans.please find out 15. 0 2 10 30 68 ? - - (cannot recall) please find out

16.if simon is taller than A, A is shorter then gayatri, sharat is taller then............ ans. gayatri

17. If a 100m train crosses a platform of 75m in 7.5 secs,another train of 120m coming opposite, how much time it takes the first train to cross the second one .. ans. none of these

18. Telegram system, 1st 15 words in x rupees,next per letter in y rupees, if z > 15 what is the total cost of c??????? ans. x+(z-15)*y

19. -------------------------------- another st line cuts this in two angles, one is 4x+36 degs and another is y degs , what is the value of x????? ans. (144-y)/4

20. If 6 i! s preceded by 8 but not followed by 9 immediately,how many..................... ans. 2

21.in the letter PREDILECTION ,1st and 3rd is

swapped,so is 2nd and 4th,5th and 7th,6th and 8th what will be 8th letter from left??????? ans. L

22.If rup ho la represents anand is fat cup wir ho represents mina is tall la dup mil represents boys are fat and wir lar nap represents tall and fat

what reprens mina ?????? ans. cup

23.If SINDHU is written as VIEOJT,SURESH is written as?????? ans.none of these

24.if hit-----> one rupee gain and miss--------> one rupee loss,one can try 100 times,he got total 30/-, how many hit?????????? ans. 65

Page 67: ti.pdf

25.In a circle, G is to the left of M , V is to the right of M,R is to the right of V ,A is to the right of R ,G is to the right of A and M is to the right of G, swap the position of G and R,V and A then who will be to the left of M

ans. R

26.there was a histogram qn. given the! capitals of 5 companies for the academic year 1995-2000,find out

a> which company will increase its capital consistently??? b> Average capital in the yr 1998????? c> average of company 2nd????? d> which company increases its capital by 10% at 1998 from that of 1995 data were 42.0 in 1995 and 46.20 in 1998 this company is the correct answer..... e> what is the max. o/p in a yr,ans.. try to sum all the cols and find the max. this were easy,i can not remeber u have to do it fast.

27. there was a qn on flowchart,which was easy, i can not recall exactly.

28. in english u have to find out errors in 5 fragments of a sentence ( GRE pattrn) which were easy, 4 qns , and fill in the blanks which were extremely difficult(4 qns) read Barron's guide

also there was a long passage which attempt at last,this was in qn no from 16-20,if it is answer of 18 is choice 2, 19 is 2 and that of 20 is 3

******** i am sending t! he answer of some of the qns,the qn will be in order,do not fear test- 1 1- 5, 2- 1, 3-5, 4- 4 , 5 - 3 , 6 - 1 , 8 - 5 , 9 - 5 , 10 - 4 , 11 - 2 , 12 - 1 , 15 - 5 , 16 - 1 , 18 - 3 , 19 - 3 , 20 - 5 26- 1 , 17 - 4 , 28 - 5 , 29 - 3 , 30 - 3 ( qn no - choice)

test -3

Page 68: ti.pdf

1 - 3 , 2 - 4 , 3 - 2 , 4 - 2 , 5 - 2 , 6 - 1 , 7 - 2 , 8 -1 , 18 - 2 , 19 - 2 , 20 - 3

that's all folks!!!!!!! that's all i

memorise..... u have to do faster...... qns were

easy..........

all the very best for ur campus........... mail

bout ur result .........be in touch.........

Hi friends!

This is new HCL aptitude paper conducted in

Jadavpur University 24 th July 2001. After

qualifying this test u have to face technical

test.

OK GOOD LUCK.

Duration:30min check the answers

QUANTITATIVE APTITUDE

Q.NO.1&2

A FACTORY produces a product (measured in cubic

feet) over seven days as per the following

schedule:

Day1 Day2 Day3 Day4 Day5 Day6 Day! 7

150 180 120 250 160 120 150

The finished goods are to be transported to the

market by a truck having a capacity of 2000 cubic

feet. Any finished goods (ready at the end of the

day) retained overnight at the factory will incur

a storage cost of rs.5 per cubic foot for each

night of storage. The hiring cost for the truck

is rs.1000 per day.

1.If the total cost of transportation and storage

is to be minimized, the truck should operate on

(a) 2nd,4th,6thand 7th days

(b) only the 7th day

(c) 2nd,4th,5th and 7th days

(d) only on 4th and 5th days

Page 69: ti.pdf

(e) none of these

ans:( )

2.if the storage cost reduces to re.0.80per cubic

foot per night,the truck should operate on

(a)2nd,4th,5thand 7th days

(b)only the 7th day

(c)2nd,4th,5th and 7th days

(d)only on 4th and 5th days

(e)none of these

ans:( )

3.how many times do the hands of a clock contain

a right angle in a day?

(a)48 (b)44 (c)4 (d)8 (e)none of these ans:( )

! 4.1-1/3+1/3^2-1/3^3+^^^.to infinite

(a) 2/3 (b) 3/5 (c)3/4 (d) 4/5(e)none of these

ans:( c)

5. 5 students take a calculus test on which the

lowest possible score is 0.&the highest possible

score is 100.the

students,rahul,aparna,suzy,rohit& shitij, each

earned different scores.suzy outscored aparna by

8 points;rohit scored 1 times what rahul

scored&10 points higher than shitiji,who scored 2

points higher than aparna.the second highest

score was 89.what score did each student achieve

on the test? Rahul-------------

1. For a CMOS inverter, the transition slope of Vout vs Vin DC characteristics can be increased

(steeper transition) by:

a. Increasing W/L of PMOS transistor

b. Increasing W/L of NMOS transistor

c. Increasing W/L of both transistors by the same factor

d. Decreasing W/L of both transistor by the same factor

2. Minimum number of 2-input NAND gates that will be required to implement the function:

Y = AB

+ CD + EF is

a. 4

b. 5

Page 70: ti.pdf

c. 6

d. 7

3. Consider a two-level memory hierarchy system M1 & M2. M1 is accessed first and on miss

M2 is

accessed. The access of M1 is 2 nanoseconds and the miss penalty (the time to get the data

from

M2 in case of a miss) is 100 nanoseconds. The probability that a valid data is found in M1 is

0.97.

The average memory access time is:

a. 4.94 nanoseconds

b. 3.06 nanoseconds

c. 5.00 nanoseconds

d. 5.06 nanoseconds

4. Interrupt latency is the time elapsed between:

a. Occurrence of an interrupt and its detection by the CPU

b. Assertion of an interrupt and the start of the associated ISR

c. Assertion of an interrupt and the completion of the associated ISR

d. Start and completion of associated ISR

5. Which of the following is true for the function (A.B + A.C + B.C)

a. This function can glitch and can be further reduced

b. This function can neither glitch nor can be further reduced

c. This function can glitch and cannot be further reduced

d. This function cannot glitch but can be further reduced

6. For the two flip-flop configuration below, what is the relationship of the output at B to the

clock

frequency?

a. Output frequency is 1/4th the clock frequency, with 50% duty cycle

b. Output frequency is 1/3rd the clock frequency, with 50% duty cycle

c. Output frequency is 1/4th the clock frequency, with 25% duty cycle

d. Output frequency is equal to the clock frequency

XOR

A B

Q

D Q

Page 71: ti.pdf

D

CLK

CLK

Q

Q

7. The voltage on Node B is:

a. 0

b. 10

c. 10

d. 5

10O

10O 10O

+ +

10O

10O

10V 20V

_ _

GND B

8. A CPU supports 250 instructions. Each instruction op-code has these fields:

The instruction type (one among 250)

A conditional register specification

3 register operands

Addressing mode specification for both source operands

The CPU has 16 registers and supports 5 addressing modes. What is the instruction op-code

length in bits?

a. 32

b. 24

c. 30

d. 36

Page 72: ti.pdf

9. In the iterative network shown, the output Yn of any stage N is 1 if the total number of 1s

at the

inputs starting from the first stage to the Nth stage is odd. (Each identical box in the

iterative

network has two inputs and two outputs). The optimal logic structure for the box consists

of:

a. One AND gate and one NOR gate

b. One NOR gate and one NAND gate

c. Two XNOR gates

d. One XOR gate

I 1 I 2 I n I n +1 I n + 2

0

Y1 Y2 Yn Yn+1 Yn+2

10. Consider a circuit with N logic nets. If each net can be stuck-at either values 0 and 1, in

how

many ways can the circuit be faulty such that only one net in it can be faulty, and such that

up-to all

nets in it can be faulty?

a. 2 and 2N

b. N and 2^N

c. 2N and 3^N-1

d. 2N and 3N

11. In the circuit shown, all the flip-flops are identical. If the set-up time is 2 ns, clock->Q

delay is 3

ns and hold time is 1 ns, what is the maximum frequency of operation for the circuit?

D1 Q1 D2 Q2 D3 Q3

CLOCK SIGNAL

a. 200 MHz

b. 333 MHz

c. 250 MHz

d. None of the above

12. Which of the following statements is/are true?

I. Combinational circuits may have feedback, sequential circuits do not.

II. Combinational circuits have a memory-less property, sequential circuits do

not.

III. Both combinational and sequential circuits must be controlled by an external

clock.

a. I only

Page 73: ti.pdf

b. II and III only

c. I and II only

d. II only

13. Consider an alternate binary number representation scheme, wherein the number of

ones M, in

a word of N bits, is always the same. This scheme is called the M-out-of-N coding scheme. If

M=N/2, and N=8, what is the efficiency of this coding scheme as against the regular binary

number

representation scheme? (As a hint, consider that the number of unique words represent

able in the

latter representation with N bits is 2^N. Hence the efficiency is 100%)

a. Close to 30%

b. Close to 50%

c. Close to 70%

d. Close to 100%

14. A CPU supports 4 interrupts- I1, I2, I3 and I4. It supports priority of interrupts. Nested

interrupts

are allowed if later interrupt is higher priority than previous one. During a certain period of

time, we

observe the following sequence of entry into and exit from the interrupt service routine:

I1-start---I2-start---I2-end---I4-start---I3-start---I3-end---I4-end---I1-end

From this sequence, what can we infer about the interrupt routines?

a. I3 > I4 > I2 > I1

b. I4 > I3 > I2 > I1

c. I2 > I1; I3 > I4 > I1

d. I2 > I1, I3 > I4 > I2 > I1

15. I decide to build myself a small electric kettle to boil my cup of tea. I need 200 ml of

water for

my cup of tea. Assuming that typical tap water temperature is 25 C and I want the water

boiling in

exactly one minute, then what is the wattage required for the heating element?

[Assume: Boiling point of water is 100 C, 1 Calorie (heat required to change 1 gm of water by

1 C)=

4 joules, 1 ml of water weighs 1 gm.]

a. Data given is insufficient

b. 800 W

c. 300 W

d. 1000 W

e. 250 W

16. The athletics team from REC Trichy is traveling by train. The train slows down, (but does

Page 74: ti.pdf

not

halt) at a small wayside station that has a 100 mts long platform. The sprinter (who can run

100

mts in 10 sec) decides to jump down and get a newspaper and some idlis. He jumps out just

as his

compartment enters the platform and spends 5 secs buying his newspaper that is at the

point

where he jumped out. He then sprints along the platform to buy idlis that is another 50 mts.

He

spends another 5 secs buying the idlis. He is now just 50 mts from the other end of the

platform

where the train is moving out. He begins running in the direction of the train and the only

other

open door in his train is located 50 mts behind the door from where he jumped. At

what(uniform)

speed should the train be traveled if he just misses jumping into the open door at the very

edge of

the platform?

Make the following assumptions

He always runs at his peak speed uniformly

The train travels at uniform speed

He does not wait (other than for the idlis & newspaper) or run baclwards

a. Data given is insufficient

b. 4 m/s

c. 5 m/s

d. 7.5 m/s

e. 10 m/s

1. if a 5-stage pipe-line is flushed and then we have to execute 5 and 12 instructions respectively then no. of cycles will be a. 5 and 12 b. 6 and 13 c. 9 and 16 d.none

2. k-map

ab ---------- c 1 x 0 0 1 x 0 x

solve it

Page 75: ti.pdf

a. A.B B. ~A C. ~B D. A+B

3.CHAR A[10][15] AND INT B[10][15] IS DEFINED WHAT'S THE ADDRESS OF A[3][4] AND B[3][4] IF ADDRESS OD A IS OX1000 AND B IS 0X2000

A. 0X1030 AND 0X20C3 B. OX1031 AND OX20C4 AND SOME OTHERS..

4. int f(int *a) { int b=5; a=&b; }

main() { int i; printf("\n %d",i); f(&i); printf("\n %d",i); }

what's the output .

1.10,5 2,10,10 c.5,5 d. none

5. main() { int i; fork(); fork(); fork(); printf("----"); }

how many times the printf will be executed . a.3 b. 6 c.5 d. 8

Page 76: ti.pdf

6. void f(int i) { int j; for (j=0;j<16;j++) { if (i & (0x8000>>j)) printf("1"); else printf("0"); } } what's the purpose of the program

a. its output is hex representation of i b. bcd c. binary

d. decimal

7.#define f(a,b) a+b #define g(a,b) a*b

main() {

int m; m=2*f(3,g(4,5)); printf("\n m is %d",m); }

what's the value of m a.70 b.50 c.26 d. 69

8. main() { char a[10]; strcpy(a,"\0"); if (a==NULL) printf("\a is null"); else printf("\n a is not null");}

what happens with it . a. compile time error. b. run-time error.

Page 77: ti.pdf

c. a is null d. a is not null.

9. char a[5]="hello"

a. in array we can't do the operation . b. size of a is too large c. size of a is too small

d. nothing wrong with it .

10. local variables can be store by compiler

a. in register or heap

b. in register or stack

c .in stack or heap .

d. global memory.

11. average and worst time complexity in a sorted binary tree is

12. a tree is given and ask to find its meaning (parse-tree)

(expression tree)

ans. ((a+b)-(c*d)) ( not confirmed)

13. convert 40.xxxx into binary .

14. global variable conflicts due to multiple file occurance

is resolved during

a. compile-time

b. run-time

c. link-time

d. load-time

15.

two program is given of factorial.

one with recursion and one without recursion .

question was which program won't run for very big no. input because

of stack overfow .

a. i only (ans.)

b. ii only

c. i& ii both .

c. none

16.

struct a

{

Page 78: ti.pdf

int a;

char b;

int c;

}

union b

{

char a;

int b;

int c;

};

which is correct .

a. size of a is always diff. form size of b.(ans.)

b. size of a is always same form size of b.

c. we can't say anything because of not-homogeneous (not in ordered)

d. size of a can be same if

.THE CURRENT IN 4-OHM RESISTOR IS (CIRCUIT IS GIVEN) ANS:1A

2.WHAT IS THE BELOW CIRCUIT A)MEMORY ELEMENT B)LATCH C)AND GATE D)OSCILLATOR ANS:NOT SURE

3.KARNAUGH MAP ANS:B'(B-BAR)

4.HOW MANY 2:1 MUX ARE REQUIRED TO IMPLEMENT 8:1 MUX ANS:7

5.TWO N_MOS FETS ARE THERE .WHAT IS THE OUTPUT=20 ANS:3VOLTS

6.#DEFINE SUM (A,B) A+B FIND THE VALUE OF X X=3DSUM(2,3)*SUM(3,2) ANS:13(NONE OF THE ABOVE)

7.FIND VALUE OF SIGMA B[i] =B7(-2)POWER I

Page 79: ti.pdf

WHERE B[i] IS THE VALUE AT THE ITH PLACE WHAT IS RESULT IF INPUT IS 0 1 1 0 0 1 1 0 ANS:+34

8.(A EX-OR B)EX-OR B=3D ANS:A

9.AB+CD+EF HOW MANY TWO I/P NAND GATES ARE REQUIRED TO IMPLEMENT THE ABOV= E FUNCTIION

ANS:6

10.HOW MANY BOOLEAN FUNCTIONS WE CAN REALIZE WITH ONE INPUT ANS:4

11. WHAT IS THE TOTAL POWER DISSIPATION IF EACH BULB RATED AT 20 W ,120V= OLTS(IN THE GIVEN FIGURE) ANS:12W

12. TO INCREASE THE SLOPE OF C-MOS .WHAT IS TO BE DONE. ANS:INCREASE W/L RATIO OF P-MOS

13.IF THERE ARE W PEOPLE STANDING IN THE QUEUE AT FIRST IF THE RATE OF RE= MOVAL IS PROPORTIONAL TO REMAINING PERSONS IN THE QUEUE. ANS:DECREASES EXPONENTIALLY

14.SIMLIFY THE FOLLOWING BOOLEAN EXPRESSION=20 A'+A'C+AB'

15.AB'+BC IN THE FOLLOWING ANSWERS WHICH ARE EQUILENT TO GIVEN FORM FUNCT=

IONALLY

ANS:ALL OF THE ABOVE

16.CIRCUIT CONSISTS OF 6 FETS IS GIVEN. O/P IS

ANS:(A+BC)'

17. IN THE FOLLOWING IF 8 I/P 'S IS GIVEN TO AND

GATE .WHICH IS THE FASTE=

ST IMPLEMENTATION=20

ANS: ((( AB)(CD))((EF)(GH)))

Page 80: ti.pdf

18. IF PROBABILITY OF EACH INPUT HIGH IS 0.5

AND LOW IS 0.5.WHAT IS THE PROBABILITY OF O/P AS

HIGH.

CIRCUIT IS GIVEN)OUTPUT Y=3D(AB)+(CD)'

ANS:13/16.

19.OUT PUT OF THE GIVEN CIRCUIT(WHEAT STONE BRIDGE

WITH DIODES)

ANS:0 VOLTS

20.IF C IS THE CAPACITENCE AND V IS THE APPLIED

VOLTAGE AND F IS THE SWIT=

HING FREQUENCY THEN POWER DISSIPATION IS

ANS: F*C*V*V

1. (steeper transition) by:

1. Increasing W/L of PMOS transistor

2. Increasing W/L of NMOS transistor

3. Increasing W/L of both transistors by the same factor

4. Decreasing W/L of both transistor by the same factor

2. Minimum number of 2-input NAND gates that will be required to implement the function: Y = AB + CD + EF is

1. 4

2. 5

3. 6

4. 7

3. Consider a two-level memory hierarchy system M1 & M2. M1 is accessed first and on miss M2 is accessed.

The access of M1 is 2 nanoseconds and the miss penalty (the time to get the data from M2 in case of a miss) is

100 nanoseconds. The probability that a valid data is found in M1 is 0.97. The average memory access time is:

1. 4.94 nanoseconds

2. 3.06 nanoseconds

3 . 5.00 nanoseconds

4.. 5.06 nanoseconds

4. Interrupt latency is the time elapsed between:

1.Occurrence of an interrupt and its detection by the CPU

Page 81: ti.pdf

2. Assertion of an interrupt and the start of the associated ISR

3. Assertion of an interrupt and the completion of the associated ISR

4. Start and completion of associated ISR

5. Which of the following is true for the function (A.B + A’.C + B.C)

1.This function can glitch and can be further reduced

2. This function can neither glitch nor can be further reduced

3. This function can glitch and cannot be further reduced

4. This function cannot glitch but can be further reduced

6. For the two flip-flop configuration below, what is the relationship of the output at B to the clock frequency?

1. Output frequency is 1/4th the clock frequency, with 50% duty cycle

2. Output frequency is 1/3rd the clock frequency, with 50% duty cycle

3. Output frequency is 1/4th the clock frequency, with 25% duty cycle

4. Output frequency is equal to the clock frequency

7. The voltage on Node B is:

1. 0

2. 10

3. –10

8.A CPU supports 250 instructions. Each instruction op-code has these fields:

1. The instruction type (one among 250)

2. A conditional register specification

3. 3 register operands

4. Addressing mode specification for both source operands

9. The CPU has 16 registers and supports 5 addressing modes. What is the instruction op-code length in bits?

32

24

30

36

10. In the iterative network shown, the output Yn of any stage N is 1 if the total number of 1s at the inputs

starting from the first stage to the Nth stage is odd. (Each identical box in the iterative network has two inputs and

two outputs). The optimal logic structure for the box consists of:

1.One AND gate and one NOR gate

2. One NOR gate and one NAND gate

3. Two XNOR gates

4. One XOR gate

11.Consider a circuit with N logic nets. If each net can be stuck-at either values 0 and 1, in how many ways can

the circuit be faulty such that only one net in it can be faulty, and such that up-to all nets in it can be faulty?

1.2 and 2N

2. N and 2^N

3. 2N and 3^N-1

4. 2N and 3N

Page 82: ti.pdf

12. In the circuit shown, all the flip-flops are identical. If the set-up time is 2 ns, clock->Q delay is 3 ns and hold

time is 1 ns, what is the maximum frequency of operation for the circuit?

a. 200 MHz

b. 333 MHz

c. 250 MHz

d. None of the above

13. Which of the following statements is/are true?

I. Combinational circuits may have feedback, sequential circuits do not.

II. Combinational circuits have a ‘memory-less’ property, sequential circuits do not.

III. Both combinational and sequential circuits must be controlled by an external clock.

1. I only

2. II and III only

3. I and II only

4. II only

14.Consider an alternate binary number representation scheme, wherein the number of ones M, in a word of N

bits, is always the same. This scheme is called the M-out-of-N coding scheme. If M=N/2, and N=8, what is the

efficiency of this coding scheme as against the regular binary number representation scheme? (As a hint,

consider that the number of unique words represent able in the latter representation with N bits is 2^N. Hence the

efficiency is 100%)

1.Close to 30%

2. Close to 50%

3. Close to 70%

4. Close to 100%

15.A CPU supports 4 interrupts- I1, I2, I3 and I4. It supports priority of interrupts. Nested interrupts are allowed if

later interrupt is higher priority than previous one. During a certain period of time, we observe the following

sequence of entry into and exit from the interrupt service routine:

1.I1-start---I2-start---I2-end---I4-start---I3-start---I3-end---I4-end---I1-end

From this sequence, what can we infer about the interrupt routines?

1. I3 > I4 > I2 > I1

2. I4 > I3 > I2 > I1

3. I2 > I1; I3 > I4 > I1

4. I2 > I1, I3 > I4 > I2 > I1

16. I decide to build myself a small electric kettle to boil my cup of tea. I need 200 ml of water for my cup of tea.

Assuming that typical tap water temperature is 25 C and I want the water boiling in exactly one minute, then what

is the wattage required for the heating element?

[Assume: Boiling point of water is 100 C, 1 Calorie (heat required to change 1 gm of water by 1 C)= 4 joules, 1 ml

of water weighs 1 gm.]

1. Data given is insufficient

2. 800 W

3. 300 W

4. 1000 W

5. 250 W

Page 83: ti.pdf

17.The athletics team from REC Trichy is traveling by train. The train slows down, (but does not halt) at a small

wayside station that has a 100 mts long platform. The sprinter (who can run 100 mts in 10 sec) decides to jump

down and get a newspaper and some idlis. He jumps out just as his compartment enters the platform and spends

5 secs buying his newspaper that is at the point where he jumped out. He then sprints along the platform to buy

idlis that is another 50 mts. He spends another 5 secs buying the idlis. He is now just 50 mts from the other end

of the platform where the train is moving out. He begins running in the direction of the train and the only other

open door in his train is located 50 mts behind the door from where he jumped. At what(uniform) speed should

the train be traveled if he just misses jumping into the open door at the very edge of the platform?

1.Make the following assumptions

*He always runs at his peak speed uniformly

* The train travels at uniform speed

* He does not wait (other than for the idlis & newspaper) or run baclwards

1. Data given is insufficient

2.4 m/s

3. 5 m/s

4. 7.5 m/s

5. 10 m/s

18.State which of the following gate combinations does not form a universal logic set:

1. 2-input AND + 2-input OR

2. 2-to-1 multiplexer

3. 2-input XOR + inverter

4. 3-input NAND

19.For the circuit shown below, what should the function F be, so that it produces an output of the same

frequency (function F1), and an output of double the frequency (function F2).

1. F1= NOR gate and F2= OR gate

2.F1=NAND gate and F2= AND gate

3. F1=AND gate and F2=XOR gate

4. None of the above

20.The FSM (finite state machine) below starts in state Sa, which is the reset state, and detects a particular

sequence of inputs leading it to state Sc. FSMs have a few characteristics. An autonomous FSM has no inputs.

For a Moore FSM, the output depends on the present state alone. For a Mealy FSM, the output depends on the

present state as well as the inputs. Which of the statements best describes the FSM below?

1. It has two states and is autonomous

2.The information available is insufficient

3. It is a Mealy machine with three states

4. It is a Moor machine with three states

21. In the circuit given below, the switch is opened at time t=0. Voltage across the capacitor at t=infinity is:

1. 2V

2. 3V

3. 5V

4. 7V

22.What is the functionality represented by the following circuit?

1. y= ! (b+ac)

2. y= ! (a+bc)

Page 84: ti.pdf

3. y= ! (a(b+c))

4. y= ! (a+b+c)

23.The value (0xdeadbeef) needs to stored at address 0x400. Which of the below ways will the memory look like

in a big endian machine: 0x403 0x402 0x401 0x400

a. be ef de ad

b. ef be ad de

c. fe eb da ed

d. ed da eb fe

24. In a given CPU-memory sub-system, all accesses to the memory take two cycles. Accesses to memories in

two consecutive cycles can therefore result in incorrect data transfer. Which of the following access mechanisms

guarantees correct data transfer?

1. A read operation followed by a write operation in the next cycle.

2. A write operation followed by a read operation in the next cycle.

3. A NOP between every successive reads & writes

4. None of the above

25.An architecture saves 4 control registers automatically on function entry (and restores them on function

return). Save of each registers costs 1 cycle (so does restore). How many cycles are spent in these tasks (save

and restore) while running the following un-optimized code with n=5:

1.Void fib(int n)

{

if((n==0) || (n==1)) return 1;

return(fib(n-1) + fib(n-2));

}

1. 120

2. 80

3. 125

4. 128

26.The maximum number of unique Boolean functions F(A,B), realizable for a two input (A,B) and single output

(Z) circuit is:

1. 2

2. 6

3. 8