0% found this document useful (0 votes)
9 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
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 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
We take content rights seriously. If you suspect this is your content, claim it here.
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