第9单元 - 作业1:OJ编程 - 创建复数类,重载流运算符
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
复习类的创建;
复习友元运算符的重载;
依照学术诚信条款,我保证此作业是本人独立完成的。
1
题目具体内容请参见本章 【第X节:第9单元作业说明】: 第9单元 - 作业1说明:【OJ编程 - 创建复数类,重载流运算符】(5分)
题目内容参见 【第9单元 - 作业1说明:【OJ编程 - 创建复数类,重载流运算符】】
如果遇到困难,可以参考 【第9单元 - 作业1说明:抓狂的同学看过来,看过来,看过来.....】
时间限制:500ms内存限制:32000kb
#include <iostream>
#include <cstdlib>
#include <limits>
#include <iomanip>
using namespace std;
class MyComplex//2. 创建一个类 MyComplex,用来表示复数。
{
public:
friend ostream& operator <<(ostream& os, const MyComplex& z);//4. 重载流插入运算符 << ,使之可以将复数输出为如下的格式(实部如果是非负数,则不输出符号位;输出时要包含半角左右小括号):
friend istream& operator >> (istream& is, MyComplex& z);//3. 重载流提取运算符 >> ,使之可以读入以下格式的输入(两个数值之间使用空白分隔),将第一个数值存为复数的实部,将第二个数值存为复数的虚部:
private:
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;
}
int main() {
MyComplex z1, z2;
cin >> z1;
cin >> z2;
cout << z1 << " " << z2 << endl; //z1和z2之间间隔1个空格
// GCC及VC编译器在调试模式下会暂停,便于查看运行结果
#if ( defined(__DEBUG__) || defined(_DEBUG) )
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
#endif
return 0;
}