0% found this document useful (0 votes)
7 views

Lab Assignment 3

The document contains code for C++ classes and functions related to sales data. It defines a Sales_data struct with fields for book number, units sold, and revenue. Functions are provided to read and print Sales_data objects, combine sales data from multiple objects, and calculate average price. Main tests different ways to construct Sales_data objects and print the output.

Uploaded by

enfarwa
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Lab Assignment 3

The document contains code for C++ classes and functions related to sales data. It defines a Sales_data struct with fields for book number, units sold, and revenue. Functions are provided to read and print Sales_data objects, combine sales data from multiple objects, and calculate average price. Main tests different ways to construct Sales_data objects and print the output.

Uploaded by

enfarwa
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 18

NAME:UM-E-FARWA

Class: BEE-2

Registration No: FA21-BEE-034

QUESTION NO # 01-03:
#include<iostream>

using namespace std;

struct sales_data{

string bookno;

unsigned units_sold = 0;

double revenue = 0.0;

sales_data& combine(const sales_data& rhs);

string ISBN() const { return bookno; }

};

const string ISBN(const sales_data &item){

return item.bookno;

void combine(sales_data &item1, const sales_data &item2){

item1.units_sold += item2.units_sold;

item1.revenue += item2.revenue;

int main(){

sales_data s1;

double price=0;
cout<<"1.Enter Book ISBN Number: "<<endl;

cout<<"\n2.Enter Unit sold:" <<endl;

cout<<"\n3.Enter Price of Book: \n"<<endl;

if(cin>>s1.bookno>>s1.units_sold>>price)

{ s1.revenue = s1.units_sold *

price;

sales_data trans;

while(cin >> trans.bookno >> trans.units_sold >> price)

trans.revenue = price * trans.units_sold;

if(ISBN(s1) == ISBN(trans)){

combine(s1, trans);

else

cout << "Total Book ISBN Number: "<<s1.bookno<<endl << "Total Unit Solds: "

<< s1.units_sold<<endl << "Total Revenue: "

<<s1.revenue << endl;

s1=trans;

cout << "Total Book ISBN Number: "<<s1.bookno<<endl << "Total Unit Solds: "
<< s1.units_sold<<endl << "Total Revenue: "

<<s1.revenue << endl;

else{

cout<<"\n NO data found."<<endl;

return 0;

OUTPUT

Question no # 04 and 11:


#include <iostream>

#include <string>

using namespace std;


struct Person {

private:

string name;

string addr;

public:

// functions required

string getName() const { return name; }

string getAddr() const { return addr; }

// constructors required

Person()=default;

Person(const string& nm, const string& ad) : name(nm), addr(ad) {}

Person(istream &is) { read(is, *this); }

};

istream& read(istream& is, Person &psn)

is >> psn.name >> psn.addr;

return is;

ostream& print(ostream& os, const Person &psn)

os << psn.name << " " << psn.addr;

return os;

}
Question no # 05,06 and 07:
#include <iostream>

#include <string>

using namespace std;

struct Sales_data {

string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

Sales_data& combine(const Sales_data& rhs);

string isbn() const { return bookNo; }

double avg_price() const;

};

Sales_data& Sales_data::combine(const Sales_data& rhs)

units_sold += rhs.units_sold;

revenue += rhs.revenue;

return *this;

double Sales_data::avg_price() const

if(units_sold != 0)

return revenue / units_sold;

else

return revenue;

ostream& print(ostream& os, const Sales_data& item)


{

os << item.bookNo << " "

<< item.units_sold << " "

<< item.revenue << " "

<< item.avg_price();

return os;

istream& read(istream &is, Sales_data& item)

double price = 0;

is >> item.bookNo >> item.units_sold >> price;

item.revenue = item.units_sold * price;

return is;

Sales_data add(const Sales_data& item1, const Sales_data& item2)

Sales_data sum = item1;

sum.combine(item2);

return sum;

int main()

Sales_data total;

cout<<"please enter following:\n ISBN NUMBER."<<endl<<"Units sold."<<endl<<"price of book."<<endl;

if(read(cin, total))

Sales_data trans;
cout<<"transaction :"<<endl;

while(read(cin, trans))

if(total.isbn() == trans.isbn())

total.combine(trans);

else

print(cout, total) << endl;

total = trans;

cout<<"Output: \n"<<endl;

print(cout, total) << endl;

else

cout<< "No data?!" << endl;

return 0;

OUTPUT:
Question no # 08:

#include <iostream>

#include <string>

using namespace std;

struct Sales_data {

// constructor

Sales_data() = default;

Sales_data(const string &s) : bookNo(s) {}

Sales_data(const string &s, unsigned n, double

p) :

bookNo(s), units_sold(n), revenue(p*n)

{} Sales_data(istream &s);

// member

string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

Sales_data& combine(const Sales_data& rhs);


string isbn() const { return

bookNo; } double avg_price()

const;

};

Sales_data& Sales_data::combine(const Sales_data& rhs)

units_sold += rhs.units_sold;

revenue += rhs.revenue;

return *this;

double Sales_data::avg_price() const

if(units_sold != 0)

return revenue / units_sold;

else

return revenue;

ostream& print(ostream& os, const Sales_data& item)

os <<"ISBN NUMBER: "<< item.bookNo <<endl<< "UNIT sold "

<< item.units_sold<<endl << "TOTAl REVENUE "

<< item.revenue <<endl<< "Average PRICE "

<< item.avg_price()<<endl;

return os;

istream& read(istream &is, Sales_data& item)

double price = 0;

cout<<"please enter ISBN number, ITEM sold and PRICE of the BOOK."<<endl;
is >> item.bookNo >> item.units_sold >>

price; item.revenue = item.units_sold *

price;

return is;

Sales_data add(const Sales_data& item1, const Sales_data& item2)

Sales_data sum = item1;

sum.combine(item2);

return sum;

Sales_data::Sales_data(istream& is)

read(is, *this);

int main()

Sales_data total1; // use default constructor

Sales_data total2("978-7-121-20038-0"); // use Sales_data(const string&)

// use Sales_data(const string& s, unsigned n,

double p) Sales_data total3("978-7-111-40701-0",

10, 128); Sales_data total4(cin); // use

Sales_data(istream&) print(cout, total1) << endl;

print(cout, total2) <<

endl; print(cout, total3)

<< endl; print(cout,

total4) << endl; return 0;

}
OUTPUT:

Question no # 09:
#include <iostream>

#include <string>

using namespace std;

// To use read here, we must move read before class definition. But when we

// do this, read cannot access to Sales_data object. So we must declare

// Sales_data ahead of read.

struct Sales_data;

istream& read(istream&, Sales_data&);

struct Sales_data {
// constructor

Sales_data() = default;

Sales_data(const string &s) : bookNo(s) {}

Sales_data(const string &s, unsigned n, double p) :

bookNo(s), units_sold(n), revenue(p*n) {}

Sales_data(istream &is) { read(is, *this); }

// member

string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

Sales_data& combine(const Sales_data& rhs);

string isbn() const { return bookNo; }

double avg_price() const;

};

Sales_data& Sales_data::combine(const Sales_data& rhs)

units_sold += rhs.units_sold;

revenue += rhs.revenue;

return *this;

double Sales_data::avg_price() const

if(units_sold != 0)

return revenue / units_sold;

else

return revenue;

}
istream& read(istream &is, Sales_data& item)

double price = 0;

cout<<"please enter ISBN number, ITEM sold and PRICE of the BOOK."<<endl;

is >> item.bookNo >> item.units_sold >> price;

item.revenue = item.units_sold * price;

return is;

ostream& print(ostream& os, const Sales_data& item)

os <<"ISBN NUMBER: "<< item.bookNo <<endl<< "UNIT sold "

<< item.units_sold<<endl << "TOTAl REVENUE "

<< item.revenue <<endl<< "Average PRICE "

<< item.avg_price()<<endl;

return os;

Sales_data add(const Sales_data& item1, const Sales_data& item2)

Sales_data sum = item1;

sum.combine(item2);

return sum;

int main()

Sales_data total1; // use default constructor

Sales_data total2("978-7-121-20038-0"); // use Sales_data(const string&)


// use Sales_data(const string& s, unsigned n, double p)

Sales_data total3("978-7-111-40701-0", 10, 128);

Sales_data total4(cin); // use Sales_data(istream&)

print(cout, total1) << endl;

print(cout, total2) << endl;

print(cout, total3) << endl;

print(cout, total4) << endl;

return 0;

OUTPUT
QUESTION NO# 10:
#include <iostream>

#include <string>

using namespace std;

// To use read here, we must move read before class definition. But when we

// do this, read cannot access to Sales_data object. So we must declare

// Sales_data ahead of read.

struct Sales_data;

istream& read(istream&, Sales_data&);

struct Sales_data {

public:

// constructor

Sales_data() : units_sold(0), revenue(0) {}

Sales_data(const string &s) : bookNo(s) {}

Sales_data(const string &s, unsigned n, double p) :

bookNo(s), units_sold(n), revenue(p*n) {}

Sales_data(istream &is) { read(is, *this); }

// member

string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

Sales_data& combine(const Sales_data& rhs);

string isbn() const { return bookNo; }

double avg_price() const;

};
Sales_data& Sales_data::combine(const Sales_data& rhs)

units_sold += rhs.units_sold;

revenue += rhs.revenue;

return *this;

double Sales_data::avg_price() const

if(units_sold != 0)

return revenue / units_sold;

else

return revenue;

istream& read(istream &is, Sales_data& item)

double price = 0;

cout<<"please enter ISBN number, ITEM sold and PRICE of the BOOK."<<endl;

is >> item.bookNo >> item.units_sold >> price;

item.revenue = item.units_sold * price;

return is;

ostream& print(ostream& os, const Sales_data& item)

os <<"ISBN NUMBER: "<< item.bookNo <<endl<< "UNIT sold "

<< item.units_sold<<endl << "TOTAl REVENUE "

<< item.revenue <<endl<< "Average PRICE "


<< item.avg_price()<<endl;

return os;

Sales_data add(const Sales_data& item1, const Sales_data& item2)

Sales_data sum = item1;

sum.combine(item2);

return sum;

int main()

Sales_data total(cin);

if(!total.isbn().empty())

Sales_data trans;

while(read(cin, trans))

if(total.isbn() == trans.isbn())

total.combine(trans);

else

print(cout, total) << endl;

total = trans;

print(cout, total) << endl;

}
else

cout << "No data?!" << endl;

return 0;

Output:

You might also like