2013级别C++文章9周(春天的)工程——运算符重载(两)

课程主页中:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接

【程序阅读】阅读程序“简单C++学生信息管理系统”,找出当中出现构造函数、友元函数、运算符重载、静态数成员语法现象出现的位置,细致体会其使用方法。在以后的设计中可以灵活应用有关方法和技巧

项目1-3直接复制第8周的代码,增加要求的运算符重载定义后,作为第9周的任务另外发博文。

【项目1】在第8周项目1基础上
(1)再定义一目运算符 -,-c相当于0-c。
(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出。改造原程序中对运算结果显示方式,使程序读起来更自然。

【项目2】在第8周项目2基础上
(1)定义对时间对象的自增和自减一目运算符

	//一目运算符的重载
	CTime operator++(int);//后置++,下一秒
	CTime operator++();//前置++,下一秒,前置与后置返回值不一样
	CTime operator--( int);//后置--,前一秒
	CTime operator--();//前置--,前一秒

(2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。

【项目3】在第8周项目3基础上
(1)定义分数的一目运算+和-,分别代表分数取正和求反,将“按位取反运算符”~重载为分数的求倒数运算。
(2)定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。

【项目4】建立一个向量类MyVector,声明例如以下,请完毕类的定义

class MyVector          //定义向量类
{
public:
    MyVector(int m);    //构造函数,共同拥有m个元素的向量,元素值预置为0
    MyVector(const MyVector &v);  //复制构造函数
    ~MyVector(); //析构函数:释放动态数组所占用的存储空间
    friend istream &operator>>(istream &input, MyVector &d);
    friend ostream &operator<<(ostream &output, const MyVector &d);
    friend MyVector operator+(const MyVector &d1,const MyVector &d2);//向量相加,相应位置上的元素相加
    friend MyVector operator-(const MyVector &d1,const MyVector &d2);//向量相减。相应位置上的元素相减
    bool operator==(const MyVector &d);//推断两个矩阵是否相等。即相应位置上的全部元素是否相等
private:
    int *Array;       //Array 为动态数组指针,指向向量占用内存的起始地址
    int num;          //向量中元素个数
};
int main(){
    MyVector d1(5),d2(5);
    cout<<"输入d1——";
    cin>>d1;
    cout<<"输入d2——";
    cin>>d2;
    cout<<"d1="<<d1<<endl;
    cout<<"d2="<<d2<<endl;
    cout<<"d1+d2="<<d1+d2<<endl;
    cout<<"d1-d2="<<d1-d2<<endl;
    cout<<"d1"<<((d1==d2)?

"==":"!=")<<"d2"<<endl;
    return 0;
}

【项目5】设计一元一次方程类,求形如ax+b=0的方程的解。
比如:输入3x-8=0时。输出的方程的解为x=2.66667;
再如:输入5s+18=0时,输出的方程的解为s=-3.6;

class CEquation
{
private:
	double a;     // 未知数系数
	double b;     // 常数项
	char unknown; // 代表未知数的符号
public:
	CEquation(double aa=0,double bb=0);
	friend istream &operator >> (istream &in,CEquation &e);
	friend ostream &operator << (ostream &out,CEquation &e);
	double Solve();
	char getUnknown();
};
int main()
{	CEquation e;
	cout<<"请输入方程(格式:ax-b=0,a、b为常数,x处是代表未知数的字母):";
	cin>>e;   //在两次測试中,分别输入3x-8=0和50s+180=0
	cout<<"方程为:"<<e;
	cout<<"方程的解为:"<<e.getUnknown()<<"="<<e.Solve()<<endl; //对两次測试,分别输出x=...和s=...
	e.Solve();
}
==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-12-24 17:12:04

2013级别C++文章9周(春天的)工程——运算符重载(两)的相关文章

第八周项目3-分数类中的运算符重载

实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年04月29日 * 版本号:v1.0 */ #include <iostream> using namespace std; class CFraction { private:

第八周 项目三 (1)分数类中的运算符重载

[项目3-分数类中的运算符重载] (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. [cpp] view plaincopyprint? class CFraction { private: int nume;  // 分子 int deno;  // 分母 public: //构造函数及运算符重载的函数声明 }; //重载函数的实现及用于测试的main()函数 /* *Copyright (c)2

第八周(运算符重载)Time类

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第八周(运算符重载) *作者:王忠 *完成日期:2015.4.28 *版本号:v1.0 * *问题描述:实现Time类中的运算符重载. *输入描述: *程序输出: #include <iostream> using namespace std; class CTime { private: unsigned short int hour; // 时 unsigned shor

第十七周oj刷题——Problem O: B C++时间类的运算符重载

Description C++时间类的运算符重载 定义一个时间类Time,其数据成员为表示时间的小时(hour).分(minute),秒(second). 重载运算符"+",使之能用于时间对象的加法运算:重载运算符"<<",使之能用于时间对象的输出操作. (1)参加运算的两个操作数可以都是时间类对象,也可以其中有一个是整数(表示秒),顺序任意. 例如,t1+t2,i+t1,t1+i均合法(设i为整数表示秒数, t1,t2为时间类Time对象). (2)输

第八周项目三-分数类中的运算符重载

实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算.可以在第4周分数类代码的基础上开始工作. /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:赵嵩 * 文件:Demo.cpp * 完成时间:2015年05月16日 * 版本号:v1.0 */ #include <iostream> using namespace std; class CFraction { private:

第八周(运算符重载)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第八周(运算符重载) *作者:王忠 *完成日期:2015.4.28 *版本号:v1.0 * *问题描述:请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 *输入描述: *程序输出: #include <iostream> using namespace std; class Complex { public: Complex(){real=0;i

第八周(运算符重载)一般函数

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第八周(运算符重载) *作者:王忠 *完成日期:2015.4.28 *版本号:v1.0 * *问题描述:请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 *输入描述: *程序输出: #include <iostream> using namespace std; class Complex { public: Complex(){real=0;i

第九周(运算符重载复数类)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第九周(运算符重载) *作者:王忠 *完成日期:2015.5.13 *版本号:v1.0 * *问题描述:定义Complex类中的<<和>>运算符的重载,实现输入和输出, *输入描述: *程序输出: #include <iostream> using namespace std; class Complex { public: Complex(){rea

第九周(运算符重载时间类)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第九周(运算符重载时间类) *作者:王忠 *完成日期:2015.5.13 *版本号:v1.0 * *问题描述:实现Time类中的运算符重载.定义对时间对象的自增和自减一目运算符 //一目运算符的重载 CTime operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒,前置与后置返回值不一样 CTime operator-