Lab programs
Lab programs
#include <cmath>
#include <string>
#include <vector>
#include <list>
using namespace std;
// q1
int electricityBill()
{
int units;
cout << "enter no of units used";
cin >> units;
// q2
class Student
{
static int rollNo;
char name[25];
int test1, test2, test3;
public:
void inputData()
{
cout << "input roll number: ";
cin >> rollNo;
int Student::rollNo = 0;
// q3
class ShoppingList
{
int codeNo;
string name;
vector<string> itemNames;
vector<int> quantities;
vector<int> prices;
public:
ShoppingList(int codeNo_, string name_) : codeNo(codeNo_), name(name_) {};
void addItem();
void delItem();
void print();
};
void ShoppingList::addItem()
{
cout << "enter item name: ";
string item;
cin >> item;
itemNames.push_back(item);
void ShoppingList::delItem()
{
cout << "enter the name of the item to be deleted: ";
string item;
cin >> item;
for (int i = 0; i < itemNames.size(); i++)
if (itemNames[i] == item) {
itemNames.erase(itemNames.begin() + i);
quantities.erase(quantities.begin() + i);
prices.erase(prices.begin() + i);
return;
}
cout << "item not found\n";
}
void ShoppingList::print()
{
cout << "code number: " << codeNo << endl;
cout << "name: " << name << endl << endl;
cout << "Item name\tQuantity\tPrice\n";
int total{};
for (int i = 0; i < itemNames.size(); i++) {
cout << itemNames[i] << "\t\t" << quantities[i] << "\t\t" << prices[i]
<< '\n';
total += quantities[i] * prices[i];
}
cout << '\n';
cout << "The total price of the order is: " << total;
}
// q4
class Polynomial
{
vector<int> coeffs; // here the ith index corresponds to the (coeffs.size() -
i)th exponent
public:
Polynomial(vector<int> arr) :coeffs(arr) {};
Polynomial operator+(Polynomial p)
{
if (coeffs.size() < p.coeffs.size())
swap(coeffs, p.coeffs);
Polynomial ans(coeffs);
for (int i = p.coeffs.size() - 1; i >= 0; i--)
ans.coeffs[i] += p.coeffs[i];
return ans;
}
void operator=(Polynomial p)
{
coeffs = p.coeffs;
}
Polynomial operator*(Polynomial p)
{
if (coeffs.size() < p.coeffs.size())
swap(coeffs, p.coeffs);
Polynomial ans({});
ans.coeffs.resize(coeffs.size() + p.coeffs.size() - 1);
for (int i = 0; i < coeffs.size(); i++)
for (int j = 0; j < p.coeffs.size(); j++)
ans.coeffs[i + j] += coeffs[i] * p.coeffs[j];
return ans;
}
friend istream& operator>>(istream& in, Polynomial& poly)
{
int termCount;
cout << "Enter the number of terms in the polynomial: ";
in >> termCount;
poly.coeffs.resize(termCount);
cout << "Enter coefficients from highest exponent to lowest:" << endl;
for (int i = 0; i < termCount; i++)
in >> poly.coeffs[i];
return in;
}
friend ostream& operator<<(ostream& out, Polynomial& poly)
{
out << "The polynomial is:\n";
for (int i = 0; i < poly.coeffs.size(); i++)
out << ((poly.coeffs[i] < 0) ? " - " : " + ") << poly.coeffs[i]
<< "x^" << poly.coeffs.size() - i - 1;
return out;
}
int compute(int x)
{
int ans = 0;
for (int i = 0; i < coeffs.size(); i++)
ans += coeffs[i] * pow(x, coeffs.size() - i - 1);
return ans;
}
};
// q5
class Shape
{
public:
virtual void readDimensions() {}
virtual void computeArea() {}
};
public:
Circle() : radius(0), area(0) {}
void readDimensions() override
{
cout << "Enter the radius of the circle: ";
cin >> radius;
}
void computeArea() override
{
area = 3.14 * radius * radius;
}
void displayResults()
{
cout << "Circle - Radius: " << radius << ", Area: " << area << endl;
}
};
public:
Rectangle() : length(0), width(0), area(0) {}
void readDimensions() override
{
cout << "Enter the length of the rectangle: ";
cin >> length;
cout << "Enter the width of the rectangle: ";
cin >> width;
}
void computeArea() override
{
area = length * width;
}
void displayResults()
{
cout << "Rectangle - Length: " << length << ", Width: " << width << ",
Area: " << area << endl;
}
};
public:
Square() : side(0), area(0) {}
void readDimensions() override
{
cout << "Enter the side length of the square: ";
cin >> side;
}
void computeArea() override
{
area = side * side;
}
void displayResults()
{
cout << "Square - Side: " << side << ", Area: " << area << endl;
}
};
// q6
template <class T>
class GenericQueue
{
T* arr;
int front;
int rear;
int size;
public:
GenericQueue(int size) : front(-1), rear(-1), size(size)
{
arr = new T[size];
}
void push(T val)
{
if (front == 0 && rear == size - 1 || rear == (front - 1) % (size - 1))
{
cout << "queue is full!";
return;
}
if (front == -1)
front = rear = 0;
else if (rear == size - 1 && front != 0)
rear = 0;
else
rear++;
arr[rear] = val;
}
T pop()
{
if (front == -1) {
cout << "queue is empty!";
return INT_MIN;
}
T val = arr[front];
if (front == rear)
front = rear = -1;
else if (front == size - 1)
front = 0;
else
front++;
return val;
}
void print()
{
if (front == -1) {
cout << "queue is empty!";
return;
}
else {
for (int i = front; i < size; i++)
cout << arr[i] << ' ';
vector<int> v;
while (size--) {
int val;
cout << "enter value: ";
cin >> val;
v.push_back(val);
}
vector<int> lessThanTenVector;
for (int val : myList)
if (val < 10)
lessThanTenVector.push_back(val);
else
break;
return 0;
}
// q8
template<class T>
int searchElement(T arr[], int size, T key)
{
for (int i = 0; i < size; i++)
if (arr[i] == key)
return i;
return -1;
}
int q8()
{
int intArr[] = { 10, 20, 30, 40, 50 };
int intKey = 30;