复 数 的 运 算 法 则

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档