My main source file is
Code:
#include <iostream>
#include <string>
using namespace std;
#include "Sales_data.h"
#include "funtions.h"
int main()
{
Sales_data total(cin);
Sales_data sum=total,trans;
while(read(cin,trans))
{
if(trans.isbn()==total.isbn())
{
total.combine(trans);
sum.combine(trans);
}
else
{
print(cout,total);
sum.combine(trans);
total=trans;
}
}
print(cout,total);
cout<<"total "<<sum.units_sold<<" books sold in "<<sum.revenue<<" dollar"<<endl;
cout<<"average sales price of all book is "<<sum.avg_price()<<" dollar"<<endl;
}
and I have also modified the header.. still dont compile
Code:
#ifndef SALES_DATA_H_INCLUDED
#define SALES_DATA_H_INCLUDED
class Sales_data{
friend ostream &print(ostream&,const Sales_data&);
friend istream &read(istream&,Sales_data&);
public:
Sales_data &combine(const Sales_data&);
Sales_data()=default;
Sales_data(istream &is)
{
double price = 0;
is >> (*this).bookNo >> (*this).units_sold >> price;
(*this).revenue = price * (*this).units_sold;
};
string isbn() const {return bookNo;}
double avg_price() const {return units_sold?revenue/units_sold:0;}
private:
std::string bookNo;
unsigned units_sold;
double revenue;
};
Sales_data add(const Sales_data&,const Sales_data&);
ostream &print(ostream&,const Sales_data&);
istream &read(istream&,Sales_data&);
#endif // SALES_DATA_H_INCLUDED
and heres the header of my functions
Code:
#ifndef FUNTIONS_H_INCLUDED
#define FUNTIONS_H_INCLUDED
Sales_data add(const Sales_data &lhs,const Sales_data &rhs)
{
Sales_data sum=lhs;
sum.combine(rhs);
return sum;
}
ostream &print(ostream &os,const Sales_data &item)
{
os<<item.isbn()<<" was sold "<<item.units_sold<<" copies at total tk "<<item.revenue
<<" and the average price is "<<item.avg_price()<<endl;
return os;
}
//input function
istream &read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
Sales_data& Sales_data::combine(const Sales_data &rhs)
{
units_sold+=rhs.units_sold;
revenue+=rhs.revenue;
return *this;
}
#endif // FUNTIONS_H_INCLUDED