第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理

查看帮助

返回
 

温馨提示:

1.本次作业属于Online Judge题目,提交后由系统即时判分。

2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。

基于第8单元的作业内容,为图形类添加异常处理代码

依照学术诚信条款,我保证此作业是本人独立完成的。

1
基于第8单元作业2的代码,为图形类添加异常处理的代码。(5分)
时间限制:500ms内存限制:32000kb
#include <iostream>
#include <string>
#include <sstream>
#include <stdexcept> using namespace std; class MyShape {
protected:
int R_, G_, B_; string colorToString() {
stringstream ss;
ss << R_ << " " << G_ << " " << B_;
return ss.str();
}
public:
void setColor(int R, int G, int B) {
R_ = R; G_ = G, B_ = B;
}
int getR() {
return R_;
}
int getG() {
return G_;
}
int getB() {
return B_;
}
virtual void Draw() = 0;
MyShape() {
R_ = 255; G_ = 255, B_ = 255;
}
}; class MyCircle : public MyShape {
private:
int x_, y_, radius_;
int min; public:
MyCircle(int x, int y, int radius) {
x_ = x;
y_ = y;
radius_ = radius;
} MyCircle() {
x_ = y_ = 200;
radius_ = 100;
} MyCircle(MyCircle& aCircle) {
x_ = aCircle.x_;
y_ = aCircle.y_;
radius_ = aCircle.radius_;
R_ = aCircle.getR();
G_ = aCircle.getG();
B_ = aCircle.getB();
}
void setCenter(int x, int y) {
x_ = x;
y_ = y;
} void setRadius(int radius) {
//3. 修改setRadius(int radius)函数,当radius的值小于等于0时,抛出underflow_error异常。
//3.1 注意:仅仅在setRadius函数中检查radius的值是否合法;在其他的函数中,包括MyShape的构造函数中,并不检查radius的值是否合法)
//3.2 在创建underflow_error异常对象时,给其构造函数传递一个字符串
//3.2 字符串的内容是:"Radius underflow: RADIUS",(不包含双引号)。其中的“RADIUS”是发生异常时setRadius()函数所接受的参数
//2.3 字符串内容示例:"Radius underflow: -100" (实际输出不包含双引号;单词间用一个空格分隔;冒号为半角字符,冒号前无空格;冒号与后面的数之间有一个空格。 - 100是传递给setRadius()函数的参数) if (radius > 0)
{
radius_ = radius;
}
else
{
stringstream ss;
ss << "Radius underflow: " << radius;
throw underflow_error(ss.str());
}
} void Draw() {
} //----在此处添加关系运算符 >、<、>=、<=、==、!= 的重载原型声明
int& operator[](const int &index);
}; //----在此处添加关系运算符的重载定义
int& MyCircle::operator[](const int & index)
{
//2. 修改数组下标运算符的重载代码,当下标超出范围时,抛出range_error异常 。(不再返回带符号整型数中最小的值)
//2.1 在创建range_error异常对象时,给其构造函数传递一个字符串
//2.2 字符串的内容是:"Index exceeds scope: INDEX",(不包含双引号)。其中的“INDEX”是发生异常时数组下标运算符所接受的参数
//2.3 字符串内容示例:"Index exceeds scope: 3" (实际输出不包含双引号;单词间用一个空格分隔;冒号为半角字符,冒号前无空格;冒号与后面的数字之间有一个空格。数字3是传递给数组下标运算符的参数) if (index == 0)
{
return x_;
}
else if (index == 1)
{
return y_;
}
else if (index == 2)
{
return radius_;
}
else
{
stringstream ss;
ss << "Index exceeds scope: " << index;
throw range_error(ss.str());
}
} int main() {
int r1 = 0, r2 = 0;
cin >> r1 >> r2;
MyCircle c1, c2;
try {
c1.setRadius(r1);
c2.setRadius(r2);
for (int i = 0; i <= 3; i++) {
cout << c1[i] << endl;
}
}
catch (underflow_error& e) {
cout << e.what() << endl;
}
catch (runtime_error& e) {
cout << e.what() << endl;
} try {
c2[r1 / (r2 == 0 ? 1 : r2)] = 321;
for (int i = 3; i >= 0; i--) {
cout << c2[i - 1] << endl;
}
}
catch (exception& e) {
cout << e.what() << endl;
} // GCC及VC编译器在调试模式下会暂停,便于查看运行结果
#if ( defined(__DEBUG__) || defined(_DEBUG) )
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
#endif
return 0;
}

网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业5:OJ编程 - 使用异常进行图形类的错误处理的更多相关文章

  1. 网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

    第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  2. 网易云课堂_C++程序设计入门(下)_第7单元:出入虽同趣,所向各有宜 – 文件输入和输出_第7单元 - 作业2:编程互评

    第7单元 - 作业2:编程互评 查看帮助 返回   提交作业(剩余10天) 完成并提交作业     作业批改 互评训练   互评作业   自评作业     成绩公布 查看成绩   由于在线编程不支持 ...

  3. 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目

    期末考试在线编程题目 返回考试   本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...

  4. 网易云课堂_C++程序设计入门(下)_第11单元:工欲善其事必先利其器 - STL简介_第11单元 - 单元作业2:OJ编程 - list 与 deque

    第11单元 - 单元作业2:OJ编程 - list 与 deque 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之 ...

  5. 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

    第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  6. 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)

    1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...

  7. 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)

    第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...

  8. 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)

    第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...

  9. 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库

    第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...

随机推荐

  1. MongoDB的优势应用场景和配置

    一:MongoDB的简介: MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系数据库之间的 ...

  2. 第二章 Vue快速入门-- 17 v-for指令的四种使用方式

    1.v-for循环普通数组 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. Kendo UI for jQuery自定义小部件第一弹!不得不看的入门指南

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  4. 把自己的web项目发布到网页上

    一.首先,登录自己的bce百度云,bce.baidu.com,建立一个自己的网站 点击左边的应用引擎BAE 点击BAE基础版的部署列表,刚开始是没有的,要添加部署 其中的选项只需要写域名(应用名称会和 ...

  5. js/html 判断ie浏览器版本

    1.html判断浏览器:<!--[if !IE]><!-->除ie外都可以识别<!--<![endif]--><!--[if IE]>所有ie可以 ...

  6. SIM800c收发短信及AT指令

    一.sim800设备安装 淘宝搜索sim800,差不多就是这么个样子 购买之后,安装手机卡,卡的缺口向外插入,会有卡住的感觉,再按一下卡会弹出 安装usb转串口驱动(CH340),设备的指示灯先是快闪 ...

  7. 手写一个类加载器demo

    1.什么是类加载器? 2.加载方式 ClassLoader类加载器,主要的作用是将class文件加载到jvm虚拟机中.jvm启动的时候,并不是一次性加载所有的类,而是根据需要动态去加载类,主要分为隐式 ...

  8. POJ 3692 幼儿园做游戏 最大团 模板题

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6191   Accepted: 3052 Desc ...

  9. HDU 6667 Roundgod and Milk Tea

    hdu题面 Time limit 6000 ms Memory limit 131072 kB OS Windows Source 2019 Multi-University Training Con ...

  10. jQuery动态添加和删除表格行

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...