关闭

C++ 实验十

858人阅读 评论(0) 收藏 举报
分类:


实验十
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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16712次
    • 积分:345
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论