问题及代码:
#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
const int N=500;
class Salary
{
private:
double salarys[N]; //多人的工资
int number; //实际人数
public:
void set_salarys();
void add_salarys(int x);
void sort_salarys();
void show_salarys();
void read_data();
void write_data();
};
void Salary::set_salarys()
{
read_data();
}
void Salary::add_salarys(int x)
{
int i;
for(i=0; i<number; i++)
salarys[i]+=x;
}
void Salary::sort_salarys()
{
int i,j;
double t;
for(i=0; i<number-1; i++)
for(j=i+1; j<number; j++)
if(salarys[i]>salarys[j])
{
t=salarys[i];
salarys[i]=salarys[j];
salarys[j]=t;
}
}
void Salary::show_salarys()
{
int i;
for(i=0; i<number; i++)
cout<<salarys[i]<<'\t';
cout<<endl;
}
void Salary::read_data( )
{
int i;
ifstream infile("salary.txt"); //以输入的方式打开文件
if(!infile) //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
i=0;
while(infile>>salarys[i])
i++;
number=i;
infile.close();
}
void Salary::write_data( )
{
int i;
ofstream outfile("salary_ordered.txt",ios::out); //以输入的方式打开文件
if(!outfile) //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0; i<number; ++i)
{
outfile<<salarys[i]<<endl;
}
outfile.close();
}
int main()
{
Salary one;
one.set_salarys();
one.show_salarys();
one.add_salarys(500);
one.show_salarys();
one.sort_salarys();
one.show_salarys();
one.write_data();
return 0;
}
运行结果:
学习小结:
遇到些许挫折!
首先是不了解怎么从文件中读入数据,百度了一下fstream类的用法后大致了解了老师在解答中写的意思。
还有ofstream可以在本文件中自动创建一个同名的txt文件。
read_data和write_data从贺老那拿来的。
有一个问题就是我将N改为50或者5后run时会出错,不知道咋回事。