You are on page 1of 19

Lab Assignment 2

(Week 1 – Lab C & Lab D)


NAME: ARZAV JAIN

BATCH: B7

ENROLL: 19103229

Q1.

#include<iostream>

#include <string>

using namespace std;

class Invoice

public:

Invoice( string, string, int, int );

void setPartNumber( string );

string getPartNumber();

void setPartDescription(string);

string getPartDescription();

void setItemQuantity(int);

int getItemQuantity();

void setItemPrice(int);

int getItemPrice();

int getInvoiceAmount();

private:

string partNumber;
string partDescription;

int itemQuantity;

int itemPrice;

};

Invoice::Invoice( string number, string description, int quantity, int price )

partNumber=number;

partDescription=description;

if(quantity>0)

itemQuantity=quantity;

else

itemQuantity=0;

cout<<"Initial quantity was invalid."<<endl;

if(price>0)

itemPrice=price;

else{

itemPrice=0;

cout<<"Initial price was invalid."<<endl;

void Invoice::setPartNumber( string number)

if ( number.length() <= 25 )
partNumber = number;

if ( number.length() > 25 ){

partNumber = number.substr( 0, 25 );

cout << "Name \"" << number <<"\" exceeds maximum length (25).\n"<< "Limiting partNumber to
first 25 characters.\n" << endl;

void Invoice::setPartDescription(string description )

if ( description.length() <= 25 )

partDescription = description;

if ( description.length() > 25 ){

partDescription = description.substr( 0, 25 );

cout << "Name \"" << description <<"\" exceeds maximum length (25).\n"<< "Limiting
partDescription to first 25 characters.\n" << endl;

void Invoice::setItemQuantity(int quantity )

if(quantity>0)

itemQuantity=quantity;

else{

itemQuantity=0;

cout<<"Initial quantity was invalid."<<endl;

}
void Invoice::setItemPrice(int price )

if(price>0)

itemPrice=price;

else{

itemPrice=0;

cout<<"Initial price was invalid."<<endl;

string Invoice::getPartNumber(){

return partNumber;

string Invoice::getPartDescription(){

return partDescription;

int Invoice::getItemQuantity(){

return itemQuantity;

int Invoice::getItemPrice(){

return itemPrice;

int Invoice::getInvoiceAmount(){

return itemQuantity*itemPrice;

int main(){
Invoice Invoice1("ed34","HP Laptop",1,64999);

Invoice Invoice2("m212","Adidas Casual Wear",2,4599);

cout << "Invoice1's initial part number is: "<< Invoice1.getPartNumber()<< "\nItem description is: "<<
Invoice1.getPartDescription()<<endl;

cout<< "Quantity per item is: "<< Invoice1.getItemQuantity()<< "\nPrice per item is: "<<
Invoice1.getItemPrice()<< endl;

cout<<"Invoice1's total amount is: "<<Invoice1.getInvoiceAmount()<<endl<<endl;

cout << "Invoice2's initial part number is: "<< Invoice2.getPartNumber()<< "\nItem description is: "<<
Invoice2.getPartDescription()<<endl;

cout<< "Quantity per item is: "<< Invoice2.getItemQuantity()<< "\nPrice per item is: "<<
Invoice2.getItemPrice()<< endl;

cout<<"Invoice2's total amount is: "<<Invoice2.getInvoiceAmount()<<endl;

Q2.

#include <bits/stdc++.h>

using namespace std;

#define vii vector<int>

#define pii pair<int, int>

class Product {

private:

string id, name, date;

int price;
public:

Product(string id, int price, string name, string date) : id(id), price(price), name(name),
date(date){};

string getId() { return id; }

int getPrice() { return price; }

virtual bool isConsumable() const { return false;

};

};

class Consumable: public Product {

private:

string expiry;

public:

Consumable(string id, int price, string name, string date, string expiry) : Product(id, price,
name, date), expiry(expiry){};

bool isConsumable() { return true; }

};

class NonConsumable: public Product {

public:

NonConsumable(string id, int price, string name, string date) : Product(id, price, name,
date){};

bool isConsumable() { return false; }

};

class Customer {
private:

string name, address;

int id;

public:

Customer(string name, string address, int Id) : name(name), address(address), id(Id) {};

int getId() { return id; }

virtual bool isMember() {

return false;

};

class Member: public Customer {

private:

static int ID;

public:

Member(string name, string address): Customer(name, address, ID++) {

bool isMember() {

return true; }

};

int Member::ID = 0;

class NonMember: public Customer {

public:
NonMember(string name, string address, int phNo) : Customer(name, address, phNo) {};

bool isMember() {

return false;

};

class Store {

public:

vector<Product *> products;

vector<Customer *> customers;

double maxDiscount = 0, totalDiscount = 0;

public:

Store(){};

void insertProduct(string id, int price, string name, string date, bool consumable, string
expiry = "") {

if(consumable) {

products.push_back(new Consumable(id, price, name, date, expiry));

} else {

products.push_back(new NonConsumable(id, price, name, date));

void insertCustomer(string name, string address, bool isMember, int phNo = 0) {

if(isMember) {

customers.push_back(new Member(name, address));


} else {

customers.push_back(new NonMember(name, address, phNo));

} double getBill(int customerId, bool isMember, vector<string> &prodId)

double total = 0;

if (isMember) {

for(auto &x: prodId) {

for(auto y: products) {

if(y->getId() == x) {

total += y->getPrice();

break;

totalDiscount += .2 * total;

maxDiscount = max(maxDiscount, .2 * total);

total -= total * .2;

} else {

double discount = 0;

for(auto &x: prodId) {

for(auto y: products) {
if(y->getId() == x) {

if(y->isConsumable()) {

discount += .02 * y->getPrice();

} else {

discount += .04 * y->getPrice();

total += y->getPrice();

totalDiscount += discount;

maxDiscount = max(maxDiscount, discount);

total -= discount;

return total;

double getMaxDiscount() {

return maxDiscount; }

double getTotalDiscount() {

return totalDiscount;

};
int main() {

Store s;

s.insertProduct("1p", 10000, "Mobile", "", false);

s.insertProduct("2p", 50, "Potato", "", true, "");

s.insertProduct("3p", 50000, "Laptop", "", false);

s.insertProduct("4p", 200, "Earphone", "", false);

s.insertProduct("5p", 40, "Grape", "", true, "");

for (int i = 0; i < 10; ++i) {

if(i < 5) {

s.insertCustomer(to_string(i), "", true);

} else {

s.insertCustomer(to_string(i), "", false, i * 1000 + i * 100 +

i * 10 + i);

vector<string> prodId = {"1p", "2p", "3p", "4p", "5p"};

for(auto x: s.customers) {

cout << x->getId() << " " << x->isMember() << " " << s.getBill(x->getId(),
x->isMember(), prodId) << '\n';

cout << "Total Discount: " << s.totalDiscount << '\n';

cout << "Maximum Discount: " << s.maxDiscount;

}
Q3. class ABC

int x;

public:

ABC() { cout<<”1”; }

~ABC() { cout<<”2”; }

};

class KLM

int y;

ABC O1, *O2;

public:

KLM() { cout<<”3”; O2 = new ABC;}

~KLM() { cout<<”4”; }

};

class XYZ

int y; KLM O3, *O4, *O5;

ABC O6;
public:

XYZ() { cout<<”5”; O4 = new KLM;}

~XYZ() { cout<<”6”; }

};

int main() { XYZ *O7; KLM *O8; O7 = new XYZ; O8 = new KLM; delete(O7); return 0; }

🡺 131151311316242

Q4.

class A

public:

A(){cout<<"1";}

A(int x){cout<<"2";}

};

class B

A O1;

public:

B(){cout<<"3";}

B(int x){cout<<"4";}
B(int x, int y):O1(5) {cout<<"5";}

};

class C : public B

public:

C(){cout<<"6";}

C(int x){cout<<"7";}

C(int x, int y): B(5) {cout<<"8";}

C(int x, int y, int z): B(5, 6) {cout<<"9";}

};

int main() { B O2, O3(5), O4(5,6); return 0; }

🡺 131425

Q5.

class A

public:

A() { cout<<”1”; }

~A() { cout<<”2”; }

};
class B

A *O1;

public:

B() {O1 = new A;}

~B() {delete(O1);}

};

class C

A O2;

public:

C() { cout<<”5”; }

~C() { cout<<”6”; }

};

class D

A *O3;

public:

D(A *t) {O3 = t; }


~D() { cout<<”6”; }

};

int main() { A *O4 = new A; B O5; C *O6, *O7 = new C; D *O8 = new D(O4); delete(O8);
delete(O7); return

0;}

🡺 11156622

Q6.

class A

public:

A(){cout<<"1";}

};

class B : virtual public A

public:

B() {cout<<" 2";}

};
class C : public B

public:

C(){cout<<" 3";}

};

class D : public C

public:

D(){cout<<"4";}

};

class E

public:

E(){cout<<" 5";}

};

class F : public E

public:

F(){cout<<"6";}
};

class G : virtual public F

public:

G() {cout<<" 7"; }

};

class H : public G

public:

H(){cout<<" 8";}

};

class I : public H

public:

I(){cout<<"9";}

};

class J : public D, public I

{
public:

J(){cout<<" 10";}

};

int main(){J O; return 0;}

🡺 15623478910

You might also like