0% found this document useful (0 votes)
26 views5 pages

Lab Task No:9: It Department (Cyber Security)

Uploaded by

shaheer727327
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)
26 views5 pages

Lab Task No:9: It Department (Cyber Security)

Uploaded by

shaheer727327
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/ 5

DSA

LAB TASK NO:9


IT DEPARTMENT (CYBER SECURITY)
PAK AUSTRIA FACHHOCHSCHULE APPLIED SCIENCE AND
TECHNOLOGY

SUBMITTED TO:
MISS ZUBARIA
SUBMITTED BY:
QANDEEL SHAHZAD
REGISTRATION NO#

B23F0001CYS009
TOPIC:
LAB 9
SUBMISSION DATE:
20/11/2024
CODE:

#include <iostream>
#include <queue>
#include <stack>
#include <string>
using namespace std;
class CustomerSupportCenter {
private:
struct Request {
int requestId;
string userName;
string issueDescription;
bool isPriority; // true if priority request, false if general request
};
queue<Request> generalSupportQueue; // FIFO for general requests
stack<Request> prioritySupportStack; // LIFO for priority requests
Request processedRequests[100]; // Array to store processed requests (fixed
size)
int processedCount = 0; // Count of processed requests
int generalToPriorityRatio = 3; // Default ratio
public:
void enqueueGeneralRequest(int requestId, const string& userName, const
string& issueDescription) {
generalSupportQueue.push({requestId, userName, issueDescription,
false});
}
void pushPriorityRequest(int requestId, const string& userName, const string&
issueDescription) {
prioritySupportStack.push({requestId, userName, issueDescription, true});
}
void setProcessingRatio(int ratio) {
generalToPriorityRatio = ratio;
}
void processRequests() {
while (!generalSupportQueue.empty() || !prioritySupportStack.empty()) {
// Process general requests based on the ratio
for (int i = 0; i < generalToPriorityRatio && !
generalSupportQueue.empty(); ++i) {
processedRequests[processedCount++] =
generalSupportQueue.front();
generalSupportQueue.pop();
}
// Process one priority request if available
if (!prioritySupportStack.empty()) {
processedRequests[processedCount++] = prioritySupportStack.top();
prioritySupportStack.pop();
}
}
}
void displayProcessedRequests() const {
cout << "Processed Requests:\n";
for (int i = 0; i < processedCount; ++i) {
const auto& request = processedRequests[i];
cout << (request.isPriority ? "Priority" : "General") << " Request ID: "
<< request.requestId << ", User: " << request.userName
<< ", Issue: " << request.issueDescription << "\n";
}
}
void displayRemainingRequests() const {
cout << "Remaining Requests:\n";
// Display remaining general requests
queue<Request> tempQueue = generalSupportQueue; // Copy for display
while (!tempQueue.empty()) {
const auto& request = tempQueue.front();
cout << "General Request ID: " << request.requestId << ", User: "
<< request.userName << ", Issue: " << request.issueDescription <<
"\n";
tempQueue.pop();
}
// Display remaining priority requests
stack<Request> tempStack = prioritySupportStack; // Copy for display
while (!tempStack.empty()) {
const auto& request = tempStack.top();
cout << "Priority Request ID: " << request.requestId << ", User: "
<< request.userName << ", Issue: " << request.issueDescription <<
"\n";
tempStack.pop();
}
}
};
int main() {
CustomerSupportCenter supportCenter;
// Adding some requests
supportCenter.enqueueGeneralRequest(1, "Izza", "Account issue");
supportCenter.enqueueGeneralRequest(2, "Zohaib", "Payment query");
supportCenter.enqueueGeneralRequest(3, "Zimal", "Shipping info");
supportCenter.pushPriorityRequest(101, "Ali", "Security concern");
supportCenter.pushPriorityRequest(102, "Sara", "Payment failure");
// Set processing ratio
supportCenter.setProcessingRatio(3);
// Process requests
supportCenter.processRequests();
// Display processed and remaining requests
supportCenter.displayProcessedRequests();
supportCenter.displayRemainingRequests();
return 0;
}
OUTPUT:

You might also like