求大神指点
本帖最后由 u010712144 于 2013-07-12 01:37:22 编辑
# include<iostream>
# include<string>
# include<vector>
# include<iomanip>
# include<fstream>
# include<sstream>
using namespace std;
class CGoods
{
string m_name;
double m_price;
public:
CGoods( string name,double price)
{
m_name = name;
m_price = price;
}
double getprice() const
{
return m_price;
}
string getname() const
{
return m_name;
}
void setprice( double price )
{
m_price = price;
}
};
class CBook : CGoods
{
string m_writer;
int m_pages;
public:
CBook( string name,double price,string writer,int pages):CGoods(name,price)
{
m_writer = writer;
m_pages = pages;
}
CBook& operator--( )
{
double price;
price = getprice();
price--;
setprice( price );
return *this;
}
CBook operator--( int )
{
double price;
price = getprice();
price--;
setprice( price );
return CBook(CGoods::getname(),CGoods::getprice()-1,m_writer,m_pages);
}
friend ostream& operator<<( ostream&o,CBook b)
{
o<<b.getname()<<endl;
o<<b.getprice()<<endl;
o<<b.m_writer<<endl;
o<<b.m_pages<<endl;
return o;
}
friend void readData( string , vector<CBook> );
friend void processData(vector<CBook> , vector<CBook> );
friend void outputData(vector<CBook>);
};
void readData( string , vector<CBook> );
void showData(vector<CBook>myVect);
void processData(vector<CBook> , vector<CBook> );
void outputData(vector<CBook>);
void main()
{
vector<CBook> myVect;//创建向量
readData("books.txt",myVect);//从文件中读取数据到向量
showData(myVect);//显示读取到的数据
vector<CBook> myVectNew;//创建向量
processData(myVectNew,myVect);//对页码大于200页的书籍执行前置-- //同时把该对象插入到myVectNew中
//其余书籍执行后置--,
//同时把该对象插入到myVectNew中
showData(myVectNew);
outputData(myVectNew); //输出myVectNew中所有价格低于10元的书籍名称,一行一个
}
void readData( string str , vector<CBook> a)
{
ifstream in( str );
string temp;
double temp2;
string temp3;
int temp4;
string s;
while(getline(in,s))
{
a.clear();
istringstream sin(s);
sin>>temp;
CBook b(temp,0,"noname",0);
sin>>temp2;
b.setprice(temp2);
sin>>temp3;
b.m_writer = temp3;
sin>>temp4;
b.m_pages = temp4;
a.push_back(b);
}
in.close();
return ;
}
void showData(vector<CBook>myVect)
{
for( unsigned int i = 0;i<myVect.size();i++)
{
cout<<myVect[i]<<endl;
}
return ;
}
void processData(vector<CBook> myVectNew, vector<CBook> myVect)
{
for( unsigned int i = 0;i<myVect.size();i++)
{
if(myVect[i].m_pages>200)
{
myVect[i].operator--();
myVectNew.push_back(myVect[i]);
}
}
return ;
}
void outputData(vector<CBook> myVectNew)
{
for( unsigned int i = 0;i<myVectNew.size();i++)
{
if(myVectNew[i].getprice()<10)
{
cout<<myVectNew[i].getname()<<endl;
}
}
return ;
}
谢谢各位啦!
[解决办法]
void readData( string , vector<CBook>& );
void processData(vector<CBook>& , vector<CBook>& );