ESC101: Fundamental of Computing: End Semester Exam 19 November 2008
ESC101: Fundamental of Computing: End Semester Exam 19 November 2008
ESC101: Fundamental of Computing: End Semester Exam 19 November 2008
Section :
Note : Read the instructions carefully
1. You will lose 3 marks if you forget to write your name, roll number, and section.
2. There are EIGHT questions in this paper distributed among total five sheets of the answer sheet.
3. You have to write in the space provided. Please avoid over writing.
4. You will be given rough sheets.
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
Marks
1
1. (marks = 5)
What is the value of d at the end of each of the following code fragments ? If you feel that there will
be any compilation error, then mention that the cause of compilation error.
(a) double d;
d = 2+11/9*4.5;
float d = b+i+1.3;
(c) long d;
d = 1234567898765;
float d = (float)(A/b/2*4);
(e) int d;
d = (int)3.4/1.1;
Answer :
(a)
(b)
(c)
(d)
(e)
2
2. (marks = 8)
Given two arrays A and B of size m and n respectively and m n. The arrays are storing characters.
We say that B appears in A if there exists a non-negative integer i such that for all j with 0 j < n,
A[i + j] = B[j]. For example if A={s, t, a, x, n, b, y}, and B={a, x, n}, then B appears in A. Write a
method Appears which takes two character arrays A and B as parameters and returns true if B appears
in A and false otherwise. You may assume that A.length B.length is ensured by the method which
calls the method Appears.
Answer :
3
3. (marks = 8)
The following method computes product of two matrices M and N and returns the reference to the
final product matrix. Fill in the blanks appropriately.
for(int i=0;__________________;i=i+1)
R[r][c]= ______________;
}
}
return R;
}
4
4. (marks=6)
Recall the class Triangle which was described in details during some lecture. For your assistance, the
following was the skeleton of the Triangle class.
class Triangle
{ private Point P;
private Point Q;
Private Point R;
public Triangle()
{ ..... }
We want to add one more non-static method Encloses() to this class. This method takes a point as
parameter and returns true if the point is enclosed by the triangle and false otherwise. Note that a
point lying on one of the sides of the triangle is also said to be enclosed by the triangle. Please fill in the
blanks of the following skeleton of the method. You may write at most one statement/expression
in a blank. You cant use && or || in the expression of if statement.
_________________________________________________________________________;
__________________________________________________________________________;
__________________________________________________________________________;
if(_______________________________________________________________________________)
return true;
5
5. (Marks = 3,5)
Draw the recursion tree for the following method when invoked with arguments n = 10, and S = .
Also print the output of the method.
if(n>=4) f(n/2,S+"-"+(n/2));
}
}
6
6. (7 marks)
There is a function G defined for positive integers as follows.
4 if 1 n 4
G(n) =
G(n 1) + G(n 2) + 2G(n 3) - 2 if n > 4
Write a method for computing G(n) which performs at most c n instructions for some constant c.
7
7. (Marks = 1,3,3,1)
Given a grid with height n and width 2n, We want to enumerate all those shortest paths from origin
(0, 0) to (2n, n) which satisfy the constraint :
Each point of the path is either on or below the diagonal.
See figure given below for better understanding. The program enumerates a path so that it prints -up
for a step in upward direction and prints -right for a step in right direction. For example for n = 2,
the output should be
-right-right-up-right-right-up
-right-right-right-up-right-up
-right-right-right-right-up-up
(8,4)
Diagonal
(0,0) 8 by 2 grid
(8,4) (8,4)
(0,0) (0,0)
Valid shortest path Invalid shortest path
Figure 1: The grid, an example of valid path and an example of invalid path
Please fill in the blanks of the following program carefully. The program reads the value of n from
command line.
class special_paths
{
public static void PathS(int r, int u, String S)
{
if(______________________) System.out.println(S);
else
{
_________________________________________________________________;
_________________________________________________________________;
}
}
8
8. (10) The idea underlying binary search is a very useful idea and can be used for a variety of problems.
We showed that we can use it for the following problem. Given an array A which stores 0s and 1s
such that all 0s precede all 1s, find the smallest index of the array which stores 1. We are going to
use similar idea for the following problem.
There is an array A storing n distinct integers. The numbers are arranged such that there is a non-
negative integer p< n such that A[0], ...A[p] is a strictly increasing sequence and A[p], ..., A[n 1] is a
strictly decreasing sequence of numbers. The following code prints the value of p. Fill in the blanks
accordingly.
else
{ if(_______________) System.out.println(The value of p =+__________);
else
{ boolean p_is_found = false;
while(________________________)
{
mid = (left+right)/2;
if(A[mid]>________________)
{
if(____________________) _____________________________;
else _____________________________________________
}
else ___________________________;
}
}
}
}
9.