加勒比久久综合,国产精品伦一区二区,66精品视频在线观看,一区二区电影

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代做CS 138、C++編程設計代寫

時間:2024-05-10  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



CS 138 - Sample Final Exam
• The exam is 150 minutes long.
• Please read all instructions carefully.
• There are 4 questions on this exam, some with multiple parts. This exam will be graded out of a
maximum of 104 points.
• The exam is a closed book and notes. You are not permitted to access any electronic devices during
the duration of the exam. You are not allowed to consult another person to find out the answers.
Do not open the exam book without the proctor’s permission. Please make sure to sign the exam
book. Please do not talk among yourselves during the exam. If you have any questions, consult the
proctor. Appropriate university policies will apply if you are caught cheating by the proctor.
• Please write your answers in the appropriate space provided in your respective exam books. Please
make sure to write your names and IDs.
• Solutions will be graded on correctness, clarity, completeness and brevity. Most problems have a
relatively simple solution. Partial solutions may be given partial credit.
• Follow the instructions given by the proctor throughout the exam. If you need to step out of the
exam hall for washroom visits, then please talk to the proctor.
NAME:
Email ID:
Student ID:
In accordance with the letter and the spirit of the University of Waterloo honor code, I pledge
that I will neither give nor receive assistance on this examination.
SIGNATURE:
Problem Max points Points Received
Q1 20
Q2 30
Q3 30
Q4 24
Total 104
1
Question 1: True/False questions (20 points)
·Please specify if the following assertions are True or False. Each sub-question is worth 2 points. For
each question you answer False, justify to get full points.
1. Virtual functions in C++ can be static.
Answer:
2. Hash functions are deterministic, meaning the same input will always produce the same hash code.
Answer:
3. An abstract class in C++ can have both concrete (non-pure virtual) and pure virtual functions.
Answer:
4. C++ allows for function overloading based solely on return type.
Answer:
5. Hash functions must be invertible, allowing the original data to be recovered from its hash code.
Answer:
6. Initializer lists allow for uniform initialization syntax in C++, regardless of whether you are initializing a built-in type or a user-defined type.
Answer:
7. Static methods can be used to modify the state of a static field directly without needing an instance
of the class.
2
Answer:
8. Instantiating a template with a user-defined type requires that the type has specific methods or
behaviors defined.
Answer:
9. The end iterator in C++ points to the last element of a container, allowing direct access to that
element.
Answer:
10. Doubly linked lists guarantee constant-time access to elements at arbitrary positions due to their
bidirectional nature.
Answer:
3
Question 2: Short Answer Questions (30 points)
For each of the sub-questions below, provide a concise, correct, and complete answer. Each sub-question
is worth 5 points.
1. What is the difference between a const pointer and a pointer to a const variable?
Answer:
2. 1: #include <iostream>
2: #include <string>
3: using namespace std;
4:
5: class Vehicle {
6: public:
7: Vehicle();
8: Vehicle(string type);
9: virtual ~Vehicle();
10: void displayType() const;
11: private:
12: string type;
13: };
14:
15: // Method definitions
16: Vehicle::Vehicle() {
17: this->type = "car";
18: }
19:
20: Vehicle::Vehicle(string type) {
21: this->type = type;
22: }
23:
24: Vehicle::~Vehicle() {}
25:
26: void Vehicle::displayType() const {
27: cout << "This is a " << this->type << endl;
28: }
29:
30: int main(int argc, char* argv[]) {
31: Vehicle car {"sedan"};
**: car.displayType();
4
33:
34: Vehicle bike {};
35: bike.displayType();
36:
37: Vehicle* bus = new Vehicle {"bus"};
38: bus->displayType();
39:
40: Vehicle* ptr = bus;
41: ptr->displayType();
42: ptr->type = "truck";
43: ptr->displayType();
44:
45: delete ptr;
46: delete bus;
**:
48: return 0;
49: }
The provided code crashes when executed. Why? Explain your answer. Be specific about where
the problem(s) sites and what exact error(s) will you get.
Answer:
5
3. #include <iostream>
class Circle {
public:
double radius;
double area();
};
double Circle::area() {
return 3.14159 * radius * radius;
}
int main() {
Circle myCircle;
myCircle.radius = 5.0;
std::cout << "The area of the circle is: " << myCircle.area() << std::endl;
return 0;
}
The Circle class does not have a constructor. Do you think this code will execute ? Explain your
answer.
Answer:
4. class Balloon {
public:
...
Balloon (); // Default ctor
Balloon (string shellColour);
Balloon (string c, int size);
Balloon (int i, string c);
...
};
int main (...) {
Balloon rb {"red"};
6
Balloon rbc1 {rb};
}
Will the last line of the main function execute correctly (note that a copy constructor is not defined)?
Answer:
7
5. What are the advantages of using the heap?
Answer:
6. What is the significance of BSTs in terms of the complexity of insertion, deletion and search?
Answer:
8
Question 3 (30 points)
For each of the sub-questions below, provide a concise, correct, and complete answer. Each of the following sub-questions below is worth 6 points.
In class, we learned about different STL container classes. Suppose this time, we want to create our
own implementation of these classes but with some OO inheritance hierarchy. We start with an Abstract
Base Class Sequence for all sequence containers, and a concrete child class Vector. Internally, Vector
uses a dynamic array to store the elements, with an additional field capacity representing this dynamic
array’s size. The field size indicates how many slots are actually being used in the array.
class Sequence {
private:
int size;
protected:
Sequence(): size {0} {}
void setSize(int size) { this -> size = size; }
public:
virtual ~Sequence() {}
virtual string& at(int index) = 0;
virtual void push_back(const string& item) = 0;
virtual void pop_back() = 0;
int getSize() const { return size; }
};
class Vector: public Sequence {
private:
string* theArray;
int capacity;
void increaseCapacity();
public:
Vector();
~Vector();
virtual void push_back(const string& item) override;
virtual void pop_back() override;
virtual string& at(int index) override;
};
string& Vector::at(int index) {
9
if(index >= 0 && index < getSize()) {
return theArray[index];
}
cerr << "Error: Out of bounds" << endl;
assert(false);
}
1. We want our Vector to be able to change its capacity dynamically. To achieve this, Implement
a private helper method increaseCapacity() that allocates a new dynamic array with double
the original capacity, copies the contents of the original array to the new array, replaces the old
array with the new array, and finally disposes of the old array. You may assume the preconditions
capacity > 0 and capacity == size.
Answer:
2. Implement the push back() and pop back() methods for Vector. Both of these methods should
update the field size. When the Vector is full, push back() should call increaseCapacity() before pushing the new item. You don’t need to shrink the capacity in pop back(). You may assume
your increaseCapacity() is implemented correctly.
Answer:
10
3. The implementation of Vector::at() performs bound checking before returning the item at the
given index. We want to perform the same bound checking for all future child classes of Sequence,
but that would require us to implement bound checking for every new child class. We can save this
effort by using the Template Method design pattern:
class Sequence {
private:
// ...
virtual string& getItemAt(int index) = 0; // virtual helper method
protected:
// ...
public:
// ...
string& at(int index); // template method
};
class vector: public Sequence {
private:
// ...
virtual string& getItemAt(int index) override;
public:
// ...
};
We can do the same for push back() and pop back(), but we will leave them as they are for now.
Implement the template method Sequence::at() and the new helper method Vector::getItemAt()
such that calling Vector::at() has the same behaviour as the original.
Answer:
11
4. Let’s implement a new concrete subclass List that uses a linked list.
class List: public Sequence {
private:
struct Node {
string val;
Node* next;
};
Node* head;
virtual string& getItemAt(int index) override;
public:
// ...
virtual void push_back(const string& item) override;
virtual void pop_back() override;
};
Implement the methods of List. You can choose to let the field head point to the “front” or the
“back” of the linked list, as long as you keep it consistent among your methods. You don’t need to
implement the constructor and the destructor. Your implementation shouldn’t leak any memory.
Answer:
5. Now that we have some Sequence classes, let’s use them to implement something else. We can use
the abstract class Sequence to implement a Stack:
template <typename T> class Stack {
private:
12
Sequence* theStack;
public:
Stack(): theStack { new T{} } {}
~Stack() { delete theStack; }
void push(const string& value);
void pop();
string top() const;
bool isEmpty();
};
Note that assigning new T to theStack in the constructor forces T to be a concrete sub-type of
Sequence. (We will assume that all subclass of Sequence has a default constructor.)
Implement the remaining methods. Since Sequence::at() already does bound checking, you don’t
need to do it again when you use it here. You may also assume that T::pop back() will abort via
assertion if the Sequence is empty.
Answer:
13
Question 4 (24 points)
For each of the sub-questions below, provide a concise, correct, and complete answer. Each of the following sub-questions below is worth 6 points.
In this question, we will start from an abstract base class Sequence and extend it to a Deque (doubleended queue). A deque is a more complex sequence container that allows insertion and removal of elements
from both the front and the back. For this implementation, internally, Deque will utilize a dynamic array
to manage its elements, similar to Vector, but with the capability to efficiently add or remove elements
at both ends. Starting with the Sequence abstract base class, we will focus on implementing the Deque
class with the necessary modifications to support dynamic resizing and double-ended operations.
class Sequence {
private:
int size;
protected:
Sequence(): size {0} {}
void setSize(int size) { this -> size = size; }
public:
virtual ~Sequence() {}
virtual string& at(int index) = 0;
virtual void push_back(const string& item) = 0;
virtual void pop_back() = 0;
int getSize() const { return size; }
};
class Deque : public Sequence {
private:
std::string* theArray;
int capacity;
int front; // Index of the front element
int rear; // Index just past the last element
void increaseCapacity();
public:
Deque();
~Deque();
void push_front(const std::string& item);
void pop_front();
virtual void push_back(const std::string& item) override;
virtual void pop_back() override;
14
virtual std::string& at(int index) override;
};
1. Implementing increaseCapacity() for Deque: To support dynamic resizing, especially when either
front or rear operations exceed the current capacity, you are asked to implement increaseCapacity().
This method is expected to double the capacity of the deque, properly repositioning elements to
maintain the deque’s order. You are expected to place the elements in the original deque at the
center of the new dequeue to account for insertion in both front and rear of the dequeue.
2. Your second task is to implement double-ended operations push front, pop front, push back and
pop back: These methods adjust the class variables front and rear accordingly. They also call
increaseCapacity() when necessary.
Answer:
15
3. Please adjust the at() method for Deque: Given Deque’s dynamic resizing and double-ended nature, its at() method must consider the front index’s offset when accessing elements.
Answer:
16
4. Lastly, proper resource management is crucial, especially for dynamic array allocation. Please implement the constructor and destructor of Deque. Please implement the constructor as no input
parameters but assume the class receives a default value for the deque capacity of 16.
Answer:
請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp






 

掃一掃在手機打開當前頁
  • 上一篇:代做INFO1113、代寫Java編程語言
  • 下一篇:福州去泰國大學留學需要辦簽證嗎(福州可以去哪辦理留學簽)
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務-企業/產品研發/客戶要求/設計優化
    有限元分析 CAE仿真分析服務-企業/產品研發
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    亚洲理论电影片| 欧美成人一二区| 麻豆一区二区麻豆免费观看| 欧美激情精品久久久六区热门| 首页国产欧美日韩丝袜| 精品久久一区| 亚洲+变态+欧美+另类+精品| 成人亚洲免费| 美国欧美日韩国产在线播放| 久久久久久久久国产一区| 亚州国产精品| 日本美女视频一区二区| 日韩成人亚洲| 狂野欧美一区| 好看的日韩av电影| 99精品美女| 成人在线超碰| 日韩二区在线观看| 国产精品一级在线观看| 久久伊人亚洲| 色综合视频一区二区三区日韩| 91视频久久| 男人的天堂亚洲在线| 91精品观看| 欧美亚洲tv| 日韩大胆成人| 国产欧美一区二区三区精品观看| 久久精品天堂| 日本免费久久| 成人av三级| 国产伦久视频在线观看| 爽好多水快深点欧美视频| 亚洲激情偷拍| 一区二区亚洲精品| 午夜日韩在线| 激情五月综合网| 亚洲福利专区| 竹菊久久久久久久| 亚洲国产影院| 91精品国产自产拍在线观看蜜| 亚洲一区二区三区中文字幕在线观看| 亚洲区小说区图片区qvod| 精品一区二区三区中文字幕| 亚洲男女网站| 中文字幕亚洲综合久久五月天色无吗'' | 久久久久影视| 欧美激情日韩| 91麻豆精品一二三区在线 | 日韩在线影视| 警花av一区二区三区| 亚洲日产av中文字幕| 日韩精品导航| 亚洲精品aⅴ| 福利电影一区| 久久久噜噜噜| 亚洲国产影院| 成人a'v在线播放| 欧美特黄视频| 99视频一区| 蜜桃视频在线观看一区二区| sm捆绑调教国产免费网站在线观看| 亚洲美女久久精品| 78精品国产综合久久香蕉| 国产精品第一| 麻豆91在线看| 国产精品一区二区三区www| 亚洲欧美校园春色| www.豆豆成人网.com| 精品亚洲自拍| 国产韩日影视精品| 蜜臀av国产精品久久久久| 韩日毛片在线观看| 国产福利亚洲| 日本美女一区二区三区| 亚洲免费毛片| 久久激情一区| 亚洲主播在线| 日韩欧美高清在线播放| 欧美一区二区三区久久精品茉莉花 | 九九综合九九| 亚洲欧美日韩精品一区二区| 黑人巨大精品欧美一区二区桃花岛| 韩国三级一区| 欧美国产三区| 视频欧美一区| 亚洲午夜精品久久久久久app| 国产农村妇女毛片精品久久莱园子 | 欧美国产精品| 国产成人高清精品免费5388| 天天操夜夜操国产精品| 亚洲天堂av影院| 99精品国产在热久久| 久久久久毛片免费观看| 久久精品123| 日韩成人精品一区| 日韩高清电影一区| 亚洲国产欧美在线观看| 伊人成人在线视频| 神马久久资源| 欧美成人精品午夜一区二区| 日本精品影院| 视频一区中文字幕国产| 精品久久毛片| 亚洲成aⅴ人片久久青草影院| 精品99久久| 成人观看网址| 伊人久久一区| 久久五月天小说| 日本在线高清| 国产亚洲观看| 欧美特黄一级大片| 日本在线啊啊| 亚洲小说图片| 伊人成人在线视频| 日韩精品五月天| 国产精品极品| www.youjizz.com在线| 亚洲精品一区二区在线播放∴| 国产精品白丝一区二区三区| 日本va欧美va瓶| 国产精品视频一区二区三区四蜜臂| 欧洲精品一区| 丁香六月综合| 欧美国产中文高清| 亚洲精品中文字幕乱码| 蜜桃av在线| 麻豆精品国产| 成人一区二区| 久久99国内| 国产亚洲一区在线| 六月丁香综合在线视频| 久久久久久久久国产一区| 日韩影院二区| 日本一区精品视频| 国产精品成人av| 亚洲人成网www| 免费高清在线视频一区·| 国产成人1区| 亚洲一区激情| 国产视频一区二| 午夜亚洲一区| 国产免费播放一区二区| 午夜亚洲性色福利视频| 国产欧美激情| 日韩专区在线视频| 日韩中出av| 亚洲美女炮图| 精品国内自产拍在线观看视频| 日韩国产网站| 久久精品凹凸全集| 国产精品伦一区二区| 99精品在线观看| 久久天堂影院| 成人a'v在线播放| 综合色一区二区| 日韩一区精品视频| 在线日韩成人| 日韩网站中文字幕| 久久久精品久久久久久96| 福利精品一区| 欧美成人国产| 91精品一久久香蕉国产线看观看| 国产精品色网| 美女精品视频在线| 韩国精品主播一区二区在线观看| 久久久精品五月天| 日本美女一区二区三区视频| 亚洲一区免费| 99久久人爽人人添人人澡| 久久女人天堂| 国产精品普通话对白| 日韩电影在线免费观看| 福利一区二区三区视频在线观看| 国产一区欧美| 日韩精品导航| 国产三级一区| 一本色道久久综合亚洲精品高清| 久久久91麻豆精品国产一区| 亚洲精品tv| 亚洲欧美成人综合| 9l视频自拍蝌蚪9l视频成人| 日韩高清不卡一区二区| 老司机午夜精品视频| 精品不卡一区| 国产精久久久| 欧美一级免费| 国产一区成人| 精品视频亚洲| 国产精品一国产精品| 成人亚洲免费| 免费观看日韩av| 久久亚洲影视| 久久九九精品视频| 亚洲狼人精品一区二区三区| 91麻豆国产自产在线观看亚洲| 久久一区91| 精品国产一区二区三区性色av| 久久激情五月激情| 91亚洲一区| 91高清一区|