-
2021-11-07 15:08:17
实验四:流运算符的重载及文件的使用
实验题目(1): 在多态性实验第2题的基础上,在复数类中增加输入流运算符>>和输出流运算符<<的重载,主函数通过“cin>>对象名”输入对象的值,通过“cout<<对象名”输出对象的值,输出复数值时将原来主函数中“对象名.print( )”改成“cout<<对象名”形式。
在上一步完成的基础上,将复数类改成一个类模板,只设一个模板参数,即实部和虚部用同一种类型,修改相应的代码,完成输入、输出功能。
实验解答:
(1)源代码参考多态性实验第2题。
(2)记录重载operator<<函数的代码:
类内: template <class T> friend ostream & operator << (ostream & out , Complex <T> a); 类外定义: template <class T> ostream & operator << (ostream & out , Complex <T> a) { out<<a.real; if(a.imag>0) out<<"+"; out<<a.imag<<"i"; out<<endl; return out; }
(3) 将类改写成类模板后程序的完整代码:(说明:多态性实验代码中的重载符号仅保留加法+,其他可省略)
# include <iostream> # include <string> using namespace std; template <class T> class Complex { private: T real; T imag; public: Complex (T r=0, T i=0) { real=r; imag=i; } /*Complex operator - (const Complex <T> a) { Complex temp; temp.real=real-a.real; temp.imag=imag-a.imag; return temp; }*/ template <class T> friend Complex operator +(const Complex <T>a,const Complex <T>b) { Complex temp; temp.real=a.real+b.real; temp.imag=a.imag+b.imag; return temp; } template <class T> friend ostream & operator << (ostream & out , Complex <T> a); }; template <class T> ostream & operator << (ostream & out , Complex <T> a) { out<<a.real; if(a.imag>0) out<<"+"; out<<a.imag<<"i"; out<<endl; return out; } int main() { Complex <int> c1(1,5),c2(5,6),c3; Complex <double> c4(1.4,6.8),c5(5.8,9.7),c6; cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; cout<<"c4="<<c4<<endl; cout<<"c5="<<c5<<endl; c3=c1+c2; cout<<"c3="<<c3<<endl; c6=c4-c5; cout<<"c6="<<c6<<endl; return 0; }
实验题目2:事先用Windows的记事本建立一个文本文件ff.txt。
① 编写一个函数void ReadFile(char* s)实现读取以s串为文件名的文本文件的内容在屏幕上显示。
② 编写一个函数void Change(char *s1,char *s2)将文本文件中的小写字母全部改写成大写字母生成一个新文件ff2.txt。
③ 主函数中调用ReadFile("ff.txt");显示ff.txt的内容,调用Change ("ff.txt" ,"ff2.txt");根据ff.txt文件作修改生成一个新的文件ff2.txt,最后再调用ReadFile("ff2.txt");显示新文件的内容。
实验解答:
void ReadFile(char *s) //请完成代码
{
char str [200]; ifstream inf (s); if (!inf) { cout<<"Cannot open the file\n"; return ; } inf.getline(str,200); cout<<str<<endl; inf.close();
}
void Change(char *s1,char *s2) //请完成代码
{
ifstream ifile(s1); if(!ifile) { cout<<"cannot open the file"<<endl; return ; } ofstream ofile(s2); if(!ofile) { cout<<"cannot open the file"<<endl; return; } char ch; while(ifile.get(ch)) { if(ch>='a'&&ch<='z') { ch=ch-32; } ofile.put(ch); } ifile.close(); ofile.close();
}
实验题目3(选做):定义学生类,该类包含学生的一些基本信息:学号、姓名、性别、成绩。定义流对象,实现用write函数将学生信息以二进制方式写到磁盘文件stu.dat中。再用read将磁盘中的学生信息读到内存显示在屏幕上。
实验解答:
Student::Student(char *nu,char *na,char *se,int s) //构造函数 { strcpy(num,nu); strcpy(name,na); strcpy(sex,se); score=s; } ostream & operator<<(ostream &out,const Student &s) //重载输出运算符<< {out<<s.num<<endl; out<<s.name<<endl; out<<s.sex<<endl; out<<s.score<<endl; return out; } void CreateBiFile(char *filename) { ofstream out(filename); Student stu[3]= _Student("B11111111","C","female",90), Student("B11111122","M","female",100), Student("B11111133","H","male",80)_ ___//对象数组的初始化 out.write(_(char*)stu,sizeof(Student)*3___); //两个实在参数自己填写 out.close( ); } void ReadBiFile(char *filename) { Student stu[num]; int i=0; ifstream in(filename); while (!in.eof( )) //读出记录并显示 in.read((char *)&stu[i++],sizeof(Student)); for(int j=0;j<i-1;j++) cout<<stu[j]; in.close( ); } int main() //主函数代码 { CreatFile("stu.dat"); ReadFile("stu.dat"); return 0; }
更多相关内容 -
c++实验报告
2019-04-01 11:19:24c++实验报告内容:编写一个程序,从数据文件中读取数据,并计算数据的统计特性。在显示器上输出数据的总数、均值和标准差。 -
C++实验报告多态性.doc
2021-08-04 21:45:34面向对象程序设计及C++(多态性实验实验报告) -
C++实验报告.doc
2019-05-11 14:56:50为了方便,把代码放在Word里面了,每次上机实验的题目代码都在。 第一次: 对如下多项式编写类定义: + + +…+ 其中,n为多项式的次数。完成如下功能: (1) 可存储任意大的多项式(提示:可用动态数组实现)。 ... -
西南交通大学C++实验报告.pdf
2020-10-29 18:04:13计算机程序设计基础 C++ 实 验 报 告 信息学院计算机教育中心 二零一二年三月 目录 实验_1_实验报告 3 实验_2_实验报告 5 实验_3_实验报告 6 实验_4_实验报告 7 实验_5_实验报告 11 实验_6_实验报告 14 实验_7_实验... -
华中科技大学计算机学院C++实验报告-实验二.pdf
2020-08-01 10:35:22课 程 实 验 报 告 课程名称面向对象程序设计 实验名称面向对象的整型栈编程 院 系 计算机科学与技术 专业班级 CS1209 班 学 号 姓 名 指导教师 李春花 2014 年 1 月 22 日 精品文档 一需求分析 1. 题目要求 整型栈... -
C++实验报告.docx
2020-02-19 10:33:25c++学分制管理系统实验报告 1.1 概要: 学生信息管理的需要,建立一个“学生信息管理系统”,以方便对学校信息数据的录入、修改、删除、查询等一系列功能。 1.2功能要求: (1)有菜单界面并且可以对功能... -
C++实验报告——个人银行账户管理系统.docx
2019-11-30 13:00:42北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告。北科C++课程实现个人银行账户管理系统的实验报告 -
C++实验报告
2017-12-27 11:06:24实验报告5-6,中南大学软件学院,2016-2017年上学期实验报告 -
燕山大学C++实验报告
2021-05-15 08:54:31燕山大学C++实验报告 -
实验报告_C++实验报告_
2021-10-02 01:22:16(1)掌握类与对象的定义与使用方法,理解面向对象方法中通过对象间传递消息的工作机制。(2)正确掌握类的不同属性成员的使用方法。(3)掌握构造函数与析构函数的概念,理解构造函数与析构函数的执行过程。... -
广工信息工程学院C++实验报告.docx
2019-12-21 08:37:39(一)新文件,头文件,源文件,并给出合适的文件名; (二)在新文件中编写代码,开发一个3维矢量类,定义相应的构造函数、复制构造函数; (三)重载运算符“+”和“-”实现矢量的相应运算;... -
华中科技大学 计算机学院C++实验报告
2014-05-20 17:10:08华中科技大学 计算机学院C++实验报告,包含最短路径算法实现以及K路归并算法实现。 -
西南交通大学c++实验报告.pdf
2020-07-23 00:03:49计算机程序设计基础 C++ 实 验 报 告 信 息 学 院 计 算 机 教 育 中 心 二零一二年三月 目录 1 2 3 实验_1_实验报告 教学班级_ 土木 13 班_ 学生学号_20120391_ 学 生姓名_ 彭祖昭_ 实验日期_ 实验地点(机房) 指导... -
Visual C++实验报告
2022-01-19 17:42:24实验报告(包含:10086查询系统、MFC实现模拟用户登录、滚动条实现调色板、基于MFC的动画居中设计、求均方差、实现滚动字幕、使用按钮控件) 软件用的是Visual Studio 2019社区版 -
cg平台c++实验报告
2022-05-13 09:42:17cg平台c++实验报告 -
东北大学c++实验报告
2016-04-27 09:26:20东北大学软件学院c++实验报告 -
东北大学C++实验报告
2013-04-04 18:20:57东北大学C++选修实验报告,希望对同学们有帮助 -
安徽工业大学C++实验报告
2012-12-20 22:54:45C++试验报告从第一章到第八章的都有。。。 -
c++实验报告.doc
2019-08-30 18:06:23c++实验报告 包括几个c++的小实验及运算结果,截图,描述…… -
合工大C++实验报告.docx
2020-02-17 10:45:16包含实验目的要求,实验内容,实验代码,实验结果分析与思考。 实验一 面向过程的简单程序设计 1.实验目的要求 (1)使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程,初步了解C++程序...