复 数 的 运 算 法 则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业3:OJ编程 - 使用异常进行复数运算的错误处理...
第9单元?-?作业3:OJ编程?-?使用异常进行复数运算的错误处理
查看帮助
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
在复数的运算中,练习异常处理
依照学术诚信条款,我保证此作业是本人独立完成的。
通过C++内建的异常类,处理复数除法中除数为0 的问题(5分)题目内容请参见【第9单元 - 作业3说明:【OJ - 使用异常进行错误处理】】
时间限制:500ms内存限制:32000kb
#include iostream
#include exception
#include stdexcept
#include limits
#include cmath
using namespace std;
class MyComplex--2. 创建一个类 MyComplex,用来表示复数。
MyComplex();
MyComplex(double a, double b);
friend ostream operator (ostream os, const MyComplex z);--4. 重载流插入运算符,使之可以将复数输出为如下的格式(实部如果是非负数,则不输出符号位;输出时要包含半角左右小括号):friend istream operator (istream is, MyComplex z);--3. 重载流提取运算符,使之可以读入以下格式的输入(两个数值之间使用空白分隔),将第一个数值存为复数的实部,将第二个数值存为复数的虚部:
MyComplex operator+(const MyComplex secondMyComplex);--加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;
MyComplex operator-(const MyComplex secondMyComplex);--减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;
MyComplex operator*(const MyComplex secondMyComplex);--乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i;
MyComplex operator-(const MyComplex secondMyComplex);--除法法则:(a+bi)÷(c+di)=[(ac+bd)-(c2+d2)]+[(bc-ad)-(c2+d2)]i.
private:
double a_;
double b_;
MyComplex::MyComplex()
MyComplex::MyComplex(double a, double b)
ostream operator(ostream os, const MyComplex z)--4. 重载流插入运算符,使之可以将复数输出为如下的格式(实部如果是非负数,则不输出符号位;输出时要包含半角左右小括号):-- TODO: 在此处插入 return 语句
os.unsetf(std::ios::showpos);
os "(" z.a_;
os.setf(std::ios::showpos);
os z.b_ "i)";
return os;
istream operator (istream is, MyComplex z)--3. 重载流提取运算符,使之可以读入以下格式的输入(两个数值之间使用空白分隔),将第一个数值存为复数的实部,将第二个数值存为复数的虚部:-- TODO: 在此处插入 return 语句
is z.a_ z.b_;
return is;
MyComplex MyComplex::operator+(const MyComplex secondMyComplex)--加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;
return MyComplex(a_ + secondMyComplex.a_, b_ + secondMyComplex.b_);
MyComplex MyComplex::operator-(const MyComplex secondMyComplex)--减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;
return MyComplex(a_ - secondMyComplex.a_, b_ - secondMyComplex.b_);
MyComplex MyComplex::operator*(const MyComplex secondMyComplex)--乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i;
return MyComplex(a_ * secondMyComplex.a_ - b_ * secondMyComplex.b_, secondMyComplex.a_ * b_ + a_ * secondMyComplex.b_);
MyComplex MyComplex::operator-(const MyComplex secondMyComplex)--除法法则:(a+bi)÷(c+di)=[(ac+bd)-(c2+d2)]+[(bc-ad)-(c2+d2)]i.
--1. 在【本单元作业2】的基础上,修改相关代码。在做除法运算时,如果作为除数的复数z是0,则抛出一个runtime_error类型的异常
--2. 在该runtime_error类型的异常对象中,存储着错误信息“Divisor is 0”(注意:请精确复制这段信息,否则即便你的程序逻辑正确,OJ系统仍然会判你失败。输出信息中不包含引号)。该错误信息可以通过runtime_error类的构造函数存入runtime_error对象中。
if (pow(secondMyComplex.a_, 2) + pow(secondMyComplex.b_, 2) == 0)--2. 在做除法时,如果除数是0,则输出一条信息:“Divisor