国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

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

代做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編程語言
  • 下一篇:福州去泰國大學留學需要辦簽證嗎(福州可以去哪辦理留學簽)
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業(yè)
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 寵物飼養(yǎng) 十大衛(wèi)浴品牌排行 suno 豆包網頁版入口 wps 目錄網 排行網

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

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

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    国产精品久久久久久亚洲调教| 欧美一区二区综合| 日韩在线视频免费观看| 久久99精品久久久久久久青青日本| 国产极品尤物在线| 国产精品av一区| 久久99久久精品国产| 日韩在线不卡视频| 国产精品美女久久久久久免费| 国产精品入口尤物| 国产精品国产对白熟妇| 精品国产免费av| 一区二区三区四区免费视频| 中文字幕久精品免| 在线观看日韩羞羞视频| 亚洲不卡中文字幕无码| 亚洲色成人www永久在线观看 | 日韩国产小视频| 日韩欧美99| 欧美精品与人动性物交免费看| 欧美激情亚洲天堂| 国产伦一区二区三区色一情| av网站在线观看不卡| 久久精品在线免费视频| 久久天天躁狠狠躁夜夜av| 国产精品视频免费观看www| 精品久久久久久一区| 亚洲成人一区二区三区| 日韩免费在线观看av| 精品欧美日韩| 国产乱码精品一区二区三区卡 | 国产伦理一区二区三区| 91精品久久久久久久久青青| 久久久久久久久四区三区| 国产精品福利片| 欧美一区二区三区四区在线 | 欧美福利精品| 国产美女精彩久久| 久久久欧美精品| 久久久精品一区二区| 中文字幕日韩精品无码内射| 日本久久久久久久| 国产专区精品视频| 久久久av水蜜桃| 国产精品福利观看| 色中色综合成人| 国产日本一区二区三区| 久久久噜噜噜久久久| 精品自拍视频在线观看| 性欧美长视频免费观看不卡| 麻豆91av| 色婷婷综合久久久久| 亚洲午夜精品久久| 国内精品视频久久| 国产成人av在线播放| 欧美激情一级二级| 欧美激情精品久久久久久小说| 91免费黄视频| 精品国产第一页| 欧美日韩精品免费观看| 114国产精品久久免费观看| 国产精品久久久久久久久久小说| 无码免费一区二区三区免费播放| 国产在线视频一区| 国产a级片网站| 午夜精品久久久久久久久久久久 | 国产精品一香蕉国产线看观看| 日韩中文字幕国产精品| 亚洲国产精品一区二区第四页av | 亚洲三区在线| 免费观看国产成人| 日日狠狠久久偷偷四色综合免费| 亚洲最大成人在线| 国产精品一区二区久久久| 国产精品丝袜一区二区三区| 色欲av无码一区二区人妻| 成人国产精品一区| 欧美精品在线第一页| 黄色91av| 国产精品视频地址| 热久久视久久精品18亚洲精品| 99www免费人成精品| 欧美激情a∨在线视频播放| 欧美精品一区二区三区三州 | 国产高清自拍一区| 日本一区高清在线视频| 国产精品91视频| 亚洲一区二区三区在线免费观看| 国产日韩欧美大片| 欧美理论片在线观看| 国内精品伊人久久| 国产精品日韩电影| 免费看欧美一级片| 精品国产一区二区三区久久久久久| 国内精品一区二区| 国产精品久久一区| 麻豆91av| 中文精品无码中文字幕无码专区| 国产日韩精品一区观看| 九九热精品在线| www插插插无码免费视频网站| 欧美日韩国产成人| 白白操在线视频| 色一情一乱一乱一区91| 国产精品69久久久| 日韩欧美一级在线| 久久精品成人一区二区三区| 欧美高清性xxxxhdvideosex| 国产精品男人爽免费视频1| 国语自产精品视频在免费| 色综合老司机第九色激情| av 日韩 人妻 黑人 综合 无码| 亚洲在线免费观看| 91精品国产91久久久久久不卡| 日韩在线国产| 久久精品成人一区二区三区| 黄色网zhan| 亚洲五月六月| 久久er99热精品一区二区三区| 欧美日韩精品免费观看| 久久99精品视频一区97| 久久综合精品一区| 欧美 日韩 激情| 欧美精品videos性欧美| 91精品国产高清自在线| 欧美亚洲日本黄色| 一区二区三区久久网| 国产二级片在线观看| 日本一欧美一欧美一亚洲视频| 久久久久久久91| 国产一区二区精品免费| 亚洲欧美日韩不卡| 国产精品欧美一区二区三区奶水| 俄罗斯精品一区二区| 日韩精品在线中文字幕| 欧美巨大黑人极品精男| 久久伦理网站| 国产一区二区三区奇米久涩| 亚洲黄色一区二区三区| 国产精品欧美激情| 久久琪琪电影院| 国产在线日韩在线| 日本亚洲欧洲精品| 久热精品视频在线免费观看| 97国产在线观看| 欧美成人一区二区在线观看| 亚洲一区二区在线看| 国产成人无码a区在线观看视频| dy888夜精品国产专区| 欧美日韩dvd| 亚洲va欧美va在线观看| 国产精品久久久久久久久久ktv| 131美女爱做视频| 国产欧美在线一区| 欧美人成在线观看| 无码免费一区二区三区免费播放| 久久在精品线影院精品国产| 国产成人极品视频| 高清视频一区二区三区| 欧美激情第六页| 日本精品免费观看| 午夜精品视频在线观看一区二区| 九色精品免费永久在线| 国产精品视频500部| 国产av无码专区亚洲精品| 逼特逼视频在线| 国产日本欧美在线观看| 免费精品视频一区| 免费在线黄网站| 欧美尤物巨大精品爽| 偷拍盗摄高潮叫床对白清晰| 欧美激情视频网站| 欧美猛少妇色xxxxx| 国产精品视频网址| 久艹在线免费观看| 久久国产精品亚洲va麻豆| 91好吊色国产欧美日韩在线| 国产精品亚洲一区二区三区| 国产日本欧美视频| 国产伊人精品在线| 国产亚洲情侣一区二区无| 国语精品免费视频| 国内精品400部情侣激情| 欧美少妇在线观看| 欧美在线观看视频| 欧美人与动牲交xxxxbbbb| 人妻少妇精品久久| 奇米四色中文综合久久| 日本国产精品视频| 人妻久久久一区二区三区| 欧美一级二级三级| 欧美高清视频一区| 国内精品久久久久久中文字幕| 黄色高清无遮挡| 国产午夜福利视频在线观看| 国产又爽又黄的激情精品视频| 国产一区二区三区黄| 国产免费观看久久黄| 99伊人久久| 国产激情美女久久久久久吹潮|