C++ 实验十

原创 2013年12月03日 11:30:53


实验十
I/O 流库
【实验目的】
1、 理解流、流类、流类体系的概念;
2、 学会用预定义格式控制函数设置输出格式(数制、宽度、小数点等) ;
3、 掌握文本文件的使用方法;
4、 初步掌握二进制文件的使用方法。
【实验内容】
1、 定义描述职工工资的类 Laborage,数据成员为职工号(No)、姓名(Name[8])、
应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。
•定义公有成员函数 Input(),在 Input()函数内输入职工号、姓名(用 getline
函数)、应发工资、社保金,实发工资由公式:Fsalary=Ssalary-Security 计算;
•定义输出职工工资的成员函数 Show()。在显示函数 Show()中,职工号、 姓
名的输出域宽为 8、左对齐,其余数据的输出域宽为 10、右对齐、保留小数点后
两位,输出格式均用预定义格式控制函数设置;
•在主函数中用 Laborage 类定义职工对象数组 a[3]。 用 Input()输入职工工资,
用 Show()显示每个职工的工资。(提示:用 getline 输入姓名后,必须用回车结束
姓名输入);
2、
将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函
数打开,使用成员函数 get 与 put 复制第一个目的文件,使用 getline 与插入运算
符复制第二个目的文件。 (提示:用 get 函数将输入文件流对象的指针指向文件
尾后, 无法将该指针移到文件首位置。所以只能定义两个输入文件流对象打开同
一源文件,用于两种方式的文件复制。 )
实验数据:
源文件:e:\ex\a.txt,文件内容为 souce file
目的文件 1:e:\ex\b.txt
目的文件 2:e:\ex\c.txt
3、 将存放在源文件(e:\ex\array1.txt)中学生成绩读入二维整型数组 a[3][5]中,数
组 a 的第 0 列存放学号,第 4 列存放平均成绩。计算出每个学生的平均成绩, 用
擂台法对数组 a 按平均成绩升序排序后,存放在目的文件(e:\ex\array2.txt)中。学
生的学号与成绩如实验数据所示。编写程序实现上述要求

1.

#include <IOSTREAM>
#include <string>
using namespace std;
class Laborage{
public:
	void Input(){
		cin.clear();
		cin>>No;
		getchar();
		cin.getline(Name,8,'\n');
		cin>>Ssalary>>Security;
		Fsalary=Ssalary-Security;
	}
	void Show(){
		cout.width(8);
		cout<<left<<No<<Name;
		cout.width(10);
		cout<<right;
		cout.width(10);
		cout<<Ssalary;
		cout.width(10);
		cout<<Security;
		cout.width(10);
		cout<<Fsalary<<endl;
		//printf("%-8s%-8s%10.2lf%10.2lf%10.2lf",No.c_str(),Name,Ssalary,Security,Fsalary);
	}
private:
	string No;
	char Name[8];
	double Ssalary,Security,Fsalary;
	
};
int main(){
	Laborage a[3];
	for(int i=0;i<3;i++)
	{
	a[i].Input();
	}
	for(i=0;i<3;i++)
	{
	a[i].Show();
	}
	return 0;
}

2.

#include <IOSTREAM>
#include <string>
#include <FSTREAM>
using namespace std;
int main(){
	ifstream sourceFile("a.txt");
	ofstream output1("b.txt");
	char tmp;
	sourceFile.clear();
	output1.clear();
	while((tmp=sourceFile.get())!=EOF)
	{
		output1.put(tmp);
	}
	output1.close();
	sourceFile.close();

	ifstream sourceFile2("a.txt");
	ofstream output2("c.txt");
	string tmpStr;
	while(getline(sourceFile2,tmpStr))
	{
		output2<<tmpStr<<endl;
	}
	sourceFile2.close();
	output2.close();
	return 0;
}


3.

#include <IOSTREAM>
#include <FSTREAM>
#include <sstream>
using namespace std;
void sort(int array[][5]){
	int max=array[0][4];
	int max_row=0;
	for(int i=1;i<3;i++){
		if(array[i][4]>max)
		{
			max=array[i][4];
			max_row=i;
		}
	}
	if(max_row!=2)
	{
		for(i=0;i<5;i++)
		{
		int tmp=array[max_row][i];
		array[max_row][i]=array[2][i];
		array[2][i]=tmp;
		}
	}

	if(array[0][4]>array[1][4])
	{
		for(i=0;i<5;i++){
			int tmp=array[0][i];
			array[0][i]=array[1][i];
			array[1][i]=tmp;
		}
	}
}
int main(){
	ifstream sourceFile("array1.txt");
	string tmpStr;
	int a[3][5];
	int row=0;
	while (getline(sourceFile,tmpStr))
	{
		stringstream ss(tmpStr);
		for(int i=0;i<5;i++)
		{
			ss>>a[row][i];
		}
		row++;
	}
	sort(a);
	ofstream outputFile("array2.txt");
	for(int j=0;j<3;j++)
	{
		for(int k=0;k<4;k++){
			outputFile<<a[j][k]<<"\t";
		}
		outputFile<<a[j][k]<<"\n";
	}
	return 0;
}


C++实验4-继承和派生1

一、问题及代码 /* * 文件名称:继承和派生1学生类 * 作 者:尚超 * 完成日期:2016年4月22日 * 版 本 号:v1.0 * 对...

C++第4次实验(提高班)—函数 :项目2.3.4

一.问题及代码 作    者:杨振宇 完成日期:2017 年 4月 10日 版 本 号:v1.0 对任务及求解方法的描述部分:将数据进行奇偶判别,分为两类进行计算 输入描述:输入...

C++ 朴素贝叶斯模型(Naive Bayesian Model,NBM)实现, 西瓜实验数据集 基于周志华老师机器学习

C++ 朴素贝叶斯模型(Naive Bayesian Model,NBM)实现, 西瓜实验数据

DLUT C++上机作业(实验六)

(2)有一个交通工具类vehicle,将它作为基类派生小车类car、卡车类truck和轮船类boat,定义这些类并定义一个虚函数用来显示各类信息。#include #include using nam...

《算法导论》实验五:最近点对算法(C++)

最近点对问题: 在n>=2个点的集合Q中寻找最近点对。 “最近”是指通常意义下的欧几里得距离:即点p1(x1,y1)和p2(x2,y2)之间的距离为:sqrt((x1-x2)2 +(y1-y2)...

c++实验7-素数和回文

一、问题及代码 /* * 文件名称:funl.cpp * 作 者:刘何毓 * 完成日期: 2016年 6月5日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:调用函数回答问...

C++实验五------数组分离

一、问题及代码 /* * 文件名称:数组分离 * 作 者: 傅智杰 * 完成日期:2016 年 5 月 5 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:通过运用...

《C++第七周实验报告2-1》---利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数

/* 【任务2】阅读下面的程序,仔细阅读注释。然后模仿完成求点类中距离的任务。 例:使用成员函数、友元函数和一般函数的区别 你需要完成的任务是,利用成员函数、友元函数和一般函数,实现三个版本的求...

C++实验3—多分段函数求值

文件名称: 求多分数段函数的值 作 者: 卢锦 完成日期: 2016 年 4 月 7 日 版 本 号: v1.0 对任务及求解方法的描述部分: 求多分段函数的值以及对if语句多...

C++实验3—定期存款利息计算器

一、问题及代码 问题:输入本金,显示存款年份,选择存款年份,计算出利息和本息。 代码: /* * 文件名称:定期存款利息计算器 * 作 者:李瑞祥 * 完成日期: 2016年4月8日 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 实验十
举报原因:
原因补充:

(最多只允许输入30个字)