Você está na página 1de 11

Exam

Fall 2011 Semester


Engr101: Introduction to Algorithms and Programming
Section 100 / 200 / 300

You are allowed to use the books and your notes.


You may not use electronic devices: including, but not limited to, calculators, laptops, and cell phones.
You may not access the internet in any way.
You may not use any device that can interpret, compile, or run p rogram code in any way.

Write your uniqname on the top of each page of the exam (excluding the first page).
You are responsible for the legibility of your work. Any work that is not clear to the grader due to sloppiness
or poor handwriting will be marked incorrect.
You m ust read and sign the Honor Code below after you have completed the exam.



Printed Uniqname: ___________________________

Printed Name: ____________________________


Circle your Lab Section below (you will lose 1 point if you dont do this or it is incorrect):

101: Cat Th, 8:30-10:30a

102: Rob Th, 10:30a-12:30p
103: Cat Th, 12:30-2:30p

104: Cassie Th, 2:30-4:30p
105: Rob Th, 4:30-6:30p

106: Cassie Fri, 8:30-10:30a
107: Cassie Fri, 10:30a-12:30p
108: Cat Fri, 12:30-2:30p

109: Rob Fri, 2:30-4:30p

201: Lisa Tu, 8:30-10:30a



202: Nader Tu, 10:30a-12:30p
203: Apoorva Tu, 12:30-2:30p
204: Apoorva Tu, 2:30p-4:30p
205: Nader Tu, 4:30p-6:30p
206: Nader Fri, 8:30-10:30a
207: Apoorva Fri, 10:30a-12:30p
208: Lisa Fri, 12:30-2:30p

209: Lisa Fri, 2:30-4:30p

301: Oz Mon, 8:30-10:30a


302: Oz Mon, 10:30a-12:30p
303: Jeff Mon, 12:30-2:30p
304: Sumit Mon, 4:30p-6:30p
305: Oz Wed, 8:30-10:30a
306: Jeff Wed, 10:30a-12:30p
307: Jeff Wed, 12:30-2:30p
308: Sumit Wed, 2:30-4:30p
309: Sumit Wed, 4:30p-6:30p

I have neither given nor received aid on


this examination, nor have I concealed a
violation of the Honor Code.
Signature:_________________________

Number

II

III

IV

Total

Grade

ENGR 101: Intro to Computers & Programming - Fall 2011

Page 1 of 11

Uniqname: ____________________________

The remainder of this page is intentionally left blank.

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 2 of 11

Uniqname: ____________________________

Question 1 - Matching (20 points)
Match each concept on the left-hand side with the phrase on the right that fits best. Note that there are
more items in the right column than in the left, so some answers will not be used.


_____ alias


A. statement executed on each iteration


_____ loop body


B. extracts characters until next '\n' into string variable


_____ member function

C. keyword for defining generic routines


_____ getline


D. encloses condition in if or while statement


_____ exit statement

E. vector of vectors of generic types


_____ local scope


F. method associated with instances of a class


_____ template


G. alternate name declared using reference operator


_____ floating point

H. terminates program


_____ ()



I. terminates function or procedure


_____ ;



J. marks end of simple statement

K. represent binary number in terms of mantissa,
exponent, and sign

L. textual context for identifier introduced within
procedure or function

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 3 of 11

Uniqname: ____________________________

Question 2 - Multiple Choice and Short Answer (20 points)
For parts a) through e) below, check the single most appropriate answer for each.

a) Consider the predicate declaration: bool myPred(const vector<int> & theVector);
What is true about the input argument to this routine? (3 pts)
____ theVector cannot be modified within myPred
____ the variable passed as theVector cannot be modified within the caller
____ theVector has global scope
____ All of the above
____ None of the above


b) Which of the following sorting algorithms prominently exploited recursion in lecture? (3 pts)
____ BubbleSort
____ InsertionSort
____ MergeSort
____ All of the above
____ None of the above


c) Suppose that G is the greatest (most positive) value expressible in an integer representation, and L is
the least (most negative) value. What is the result of evaluating the expression L-5 ? (3 pts)
____ G + 5
____ G 5
____ G 4
____ L + 4
____ None of the above


d) Suppose we have declared s as an empty string. Which of the following prints GoBlue! on a single
line of output? (3 pts)

____ s = "GoBlue!"; s[3]='l'; cout << s << endl;
____ s = "GoBlue!"; s.push_back('!'); cout << s << endl;
____ s = "GoBlue!"; cout << s[1] << "oBlue!" << endl;
____ s = "Blue!"; cout << s.append("Go") << endl;
____ None of the above







ENGR 101: Intro to Computers & Programming - Fall 2011


Page 4 of 11

Uniqname: ____________________________

e) Consider the following iteration code, assuming i has been declared as an int:
i=0;
while (i+1 < 100) {
i++;
cout << i;
}
Which of the following for statements is equivalent? (3 pts)
____
____
____
____
____

for (i=0; i<99; i++) cout << i+1;


for (i=1; i<100; i++) cout << i;
for (i=1; i+1<=100; i++) cout << i;
All of the above
None of the above

f) Rank the following 8-bit two's complement numbers from 1 to 5, where the most negative number is
labeled with a 1 and the most positive number is labeled with a 5. (5 pts)
____
____
____
____
____

00000000
01010101
10101010
11111111
01100000

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 5 of 11

Uniqname: ____________________________

Question 3 What does the code do? (20 points)

In the space provided beside each of the following four programs, write one of the following:
The screen output of the program, using underscore to denote any spaces (e.g. 6_24_42)
Wont finish if the program would enter an infinite loop or potentially crash or otherwise fail to
terminate normally.

Assume that each code has all necessary libraries included, and using namespace std; at the
beginning. Do not put any scratch work in the answer box.









Answer:
int main()
{
ofstream a("zzzzz");
a << 1.2 << " 3.4 " << endl;
a.close();
ifstream b("zzzzz");
while(not b.fail())
{
double a;
b >> a;
cout << a << endl;
}
return 0;
}












int main()
{
string s = "November_2";
string s1 = "dissect?";
int j=5, k=6;

Answer:

for (int i=2; i<s.size(); i=i+4)


{
s1.at(j) = s.at(i);
s1.at(k) = s.at(i+1);
j--;
k++;
}
cout << s1 << endl;
return 0;
}

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 6 of 11

Uniqname: ____________________________


Answer:

int main()
{
vector<int> v(6,1);
for (int i=0; i<v.size(); i++)
{
v.at(i) = v.at(i) + v.at(i-1);
cout << v.at(i) << " ";
}
cout << endl;
return 0;
}


Answer:

void s2(string s)
{
if (s.size()>2)
{
s2(s.substr(1,s.size()-2));
cout << s[0] << s[s.size()-1];
}
else
{
cout << s;
}
return;
}
int main()
{
string s = "November_2";
s2(s);
cout << endl;
return 0;
}





ENGR 101: Intro to Computers & Programming - Fall 2011


Page 7 of 11

Uniqname: ____________________________

Question 4 Write some code (20 points)

For this question, you must write the complete definition of a procedure, called flipflops, on the
following page that takes a single string composed entirely of lowercase letters of any length,
determines if the string flipflops, and finds the lowest and highest letters in the string if it does. A string
of lowercase letters is said to flipflop if each character in the string is alternately higher in the alphabet
or lower in the alphabet than the character before it. The first character in the string must always be
lower than the second, the second must be higher than the third, the third must be lower than the
fourth, etc. An empty string does not flipflop and a string with one character always flipflops.

An example of a string that flipflops would be abate since the first a is lower than b, b is higher
than the second a, the second a is lower than t, and t is higher than e. Note that abated does
NOT flipflop, because e is not lower than d and chatter does NOT flipflop, because the first t is not
higher than the second t.

The procedures declaration is as follows:

void flipflops(const string & str, bool & flip, char & low, char & high);


If the procedure determines that the input string flipflops, it must set the flip variable to true, the low
variable to the lowest letter found in the string, and the high variable to the highest letter found in the
string. If the procedure determines that the input string does not flipflop, it must set the flip variable
to false and the low and high variables are left undefined.

Notes:
You may assume that using namespace std; and all necessary libraries are included at the
beginning of the program.
This procedure can be implemented in fewer than 25 lines of code.

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 8 of 11

Uniqname: ____________________________

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 9 of 11

Uniqname: ____________________________

Question 5 Write some code (20 points)

For this question, you must write the complete definition of a procedure, called findLongest, on the
following page that analyzes the contents of a vector of integers to find the longest sequence of
increasing values in the vector, writes this sequence to another vector, and then sums the contents of
the sequence. The initial vector will only consist of positive integers except for the last value in the
vector that will be set equal to the value -1.


An example of the longest sequence of increasing values in the vector [1 4 5 2 5 7 9 10 5 6 -1]
would be [2 5 7 9 10] and the sequences sum would be 33. Additionally, the longest sequence of
increasing values in the vector [5 6 7 1 2 3 5 7 8 4 3 -1] would be [1 2 3 5 7 8] and the
sequences sum would be 26. Finally, note that two adjacent integers with the same value constitute a
break in a sequence. Thus, the longest sequence of increasing values in the vector [1 2 4 4 5 -1]
would be [1 2 4] and the sequences sum would be 7.

The procedures declaration is as follows:

void findLongest(const vector <int> & inVec, vector <int> & outVec,
int & sum);


Once the procedure finds the longest sequence of increasing values in the vector inVec, it must first
clear the contents of outVec and then write the contents of the sequence into outVec in the order that
the sequence appeared in inVec. After writing the contents of the sequence into outVec, the
procedure must write the sum of the integers contained in the sequence into the variable sum.

Important Notes:
You may assume that using namespace std; and all necessary libraries are included at the
beginning of the program.
Your solution must use only those vectors that are in the procedures parameter list and no
more. In other words, you may not declare and/or use any vectors other than inVec and
outVec in your solution.
You may assume that there will be at least one sequence of increasing values in inVec whose
length is greater than or equal 2. For example, [3 2 1 -1] and [7 7 7 -1] would both be
considered invalid inputs for inVec.
You may assume that there will be no ties for a longest sequence. For example, [5 6 2 3 -1]
and [4 5 6 1 2 3 -1] would both be considered invalid inputs for inVec.
This procedure can be implemented in fewer than 30 lines of code.


ENGR 101: Intro to Computers & Programming - Fall 2011


Page 10 of 11

Uniqname: ____________________________

ENGR 101: Intro to Computers & Programming - Fall 2011


Page 11 of 11

Você também pode gostar