Skip to main content

Infection Simulation

0 likes • Nov 18, 2022
C++
Loading...
Download

More C++ Posts

2D Array Chessboard Pattern

AustinLeath
0 likes • Nov 18, 2022
C++
#include<iostream>
using namespace std;
const int rows = 8;
const int cols = 8;
char chessboard[rows][cols];
void setBoard(char chessboard[][cols]);
void printBoard(char chessboard[][cols]);
void setBoard(char chessboard[][cols]) {
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
if(i % 2 == 0 && j % 2 == 0) {
chessboard[i][j] = 'x';
} else {
if(i % 2 != 0 && j % 2 == 1) {
chessboard[i][j] = 'x';
} else {
chessboard[i][j] = '-';
}
}
}
}
return;
}
void printBoard(char chessboard[][cols]) {
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
cout << chessboard[i][j] << " ";
}
cout << endl;
}
return;
}
int main(int argc, char const *argv[])
{
setBoard(chessboard);
printBoard(chessboard);
return 0;
}

Hello, World!

AustinLeath
0 likes • Nov 18, 2022
C++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}

BFS/DFS/TopSort

rlbishop99
0 likes • Apr 30, 2021
C++
#include <bits/stdc++.h>
#define MAXSIZE 50000
#define INF 100000
using namespace std;
vector<int> adj[MAXSIZE]; //Adjacency List
bool visited[MAXSIZE]; //Checks if a node is visited or not in BFS and DFS
bool isConnected = true; //Checks if the input graph is connected or not
int dist[MAXSIZE], discover[MAXSIZE], finish[MAXSIZE]; //Distance for BFS, in time and out time for DFS
int t = 1; //Time used for DFS
int u, v, i, j, k, N = 0;
stack<int> st; //Stack for TopSort
multiset<pair<int, int>> s; //collection of pairs to sort by distance
pair<int, int> current; //pointer variable to a position in the multiset
void BFS()
{
queue<int> q; //queue for BFS
q.push(1); //pushing the source
dist[1] = 0; //assign the distance of source as 0
visited[1] = 1; //marking as visited
while(!q.empty())
{
u = q.front();
q.pop();
for(i=0; i < adj[u].size(); i++)
{
v = adj[u][i]; //Adjacent vertex
if(!visited[v]) //if not visited, update the distance and push onto queue
{
visited[v] = 1;
dist[v] = dist[u]+1;
q.push(v);
}
}
}
for(i = 1; i <= N; i++)
{
s.insert(make_pair(dist[i], i)); //for sorted distance
}
cout << "BFS results:" << endl;
//prints BFS results and checks if the graph is connected
while(!s.empty())
{
current = *s.begin();
s.erase(s.begin());
i = current.second;
j = current.first;
if(j == INF) //if any infinite value, graph is not connected
{
cout << i << " INF" << endl;
isConnected = false;
}
else
{
cout << i << " " << j << endl;
}
}
//marks blocks of memory as visited
memset(visited, 0, sizeof visited);
}
void dfsSearch(int s)
{
visited[s] = 1; //marking it visited
discover[s] = t++; //assigning and incrementing time
int i, v;
for(i = 0; i < adj[s].size(); i++)
{
v = adj[s][i];
if(!visited[v]) //if vertex is not visited then visit, else continue
{
dfsSearch(v);
}
}
st.push(s); //pushed onto stack for TopSort if it was called
finish[s] = t++; //out time
}
void DFS()
{
for(i = 1; i <= N; i++)
{
if(visited[i]) //if visited continue, else visit it with DFS
{
continue;
}
dfsSearch(i); //embedded function to actually perform DFS
}
for(i=1;i<=N;i++)
{
s.insert(make_pair(discover[i], i)); //minheap for sorted discovery time
}
cout << "DFS results:" << endl;
while(!s.empty()) //Prints DFS results as long as the multiset is not empty
{
current = *s.begin(); //duplicates the pointer to first object in the multiset
s.erase(s.begin()); //erases the first object in multiset
i = current.second;
cout << i << " " << discover[i] << " " << finish[i] << endl; //prints discover times and finish times
}
}
void TopSort()
{
//call DFS so we can have a sorted stack to print
for(i=1;i<=N;i++)
{
if(visited[i])
{
continue;
}
dfsSearch(i);
}
cout<<"Topological Sort results:"<<endl;
//print sorted results from DFS
while(!st.empty())
{
i = st.top();
st.pop();
cout << i << endl;
}
//declare blocks of memory as visited
memset(visited, 0, sizeof visited);
}
int main()
{
string str, num, input;
int selection, connectedChoice = 0;
//get to input any file, more freedom than declaring file in command line
cout << "Enter the exact name of your input file [case sensitive]: ";
cin >> input;
ifstream inputFile(input); //Read the input file
//checks if the ifstream cannot open
if(inputFile.fail())
{
cout << endl << "No input files matching that name. Terminating..." << endl;
return 0;
}
//Read until the end of file
while(!inputFile.eof())
{
getline(inputFile, str); //read the current line
if(str == "")
{
continue;
}
if(!isdigit(str[0])) //checks to see if the first item in a line is a digit or not
{
cout << "Invalid file format. You have a line beginning with a non-digit. Terminating..." << endl;
return 0;
}
stringstream ss;
ss << str; //convert the line to stream of strings
ss >> num; //read the line num
stringstream(num) >> u;
while(!ss.eof())
{
ss>>num;
if(stringstream(num) >> v)
{
adj[u].push_back(v); //read the adjacent vertices
}
}
N++; //calculate the number of vertices
sort(adj[u].begin(), adj[u].end()); //sort the adjacency list in case it is not sorted
}
//creates arbitrary values for distance, will check later if INF remain
for(i = 1; i <= N; i++)
{
dist[i] = INF;
}
cout << endl << "Valid Input file loaded!" << endl;
while(selection != 4)
{
cout << "************************************************" << endl;
cout << "What type of analysis would you like to perform?" << endl;
cout << "1: Breadth-First Search" << endl;
cout << "2: Depth-First Search" << endl;
cout << "3: Topological Sort" << endl;
cout << "4: Quit" << endl;
cout << "************************************************" << endl;
//read user input and execute selection
cin >> selection;
switch(selection)
{
case 1:
cout << endl;
BFS();
cout << endl;
cout << "Would you like to know if the graph is connected?" << endl;
cout << "1: Yes" << endl;
cout << "Any other key: No" << endl;
cin >> connectedChoice;
switch(connectedChoice)
{
case 1:
if(!isConnected)
{
cout << "The graph is not connected." << endl << endl;
}
else
{
cout << "The graph is connected!" << endl << endl;
}
break;
default:
break;
}
break;
case 2:
cout << endl;
DFS();
cout << endl;
break;
case 3:
cout << endl;
TopSort();
cout << endl;
break;
case 4:
return 0;
default:
cout << endl << "Invalid selection." << endl; //loops the selection prompt until a valid selection is input.
}
}
}

Parking Lot Simulation

AustinLeath
0 likes • Nov 18, 2022
C++
#include<iostream>
#include<fstream>
#include<vector>
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
using namespace std;
//data storage for parking lot info, admin, managers, users, and tickets
struct Parking_Lot_info{
int total_Space;
int regular;
int motorcycle;
int disability;
};
struct Admin{
string name;
string id;
string password;
};
struct Manager{
string name;
string id;
string password;
};
struct User{
string id;
string name;
string password;
string makeModel1;
string makeModel2;
string year;
string plate;
};
struct Ticket{
string ticket_Number;
string ticket_Amount;
string ticket_Issued;
string ticket_Status;
string reason;
string plate;
};
//prototypes
vector<Admin>admin_Vector;
vector<Admin>::iterator admin_it;
vector<Manager>manager_Vector;
vector<Manager>::iterator manager_it;
vector<User>user_Vector;
vector<User>::iterator user_it;
vector<Ticket>ticket_Vector;
vector<Ticket>::iterator ticket_it;
void Initial_Admin_Vector(char admin_People_File_Name[]);
void Initial_Manager_Vector(char management_People_File_Name[]);
void Initial_User_Vector(char user_People_File_Name[]);
void Initial_Ticket_Vector();
void Login_System();
void Checking_Id_Password();
void Admin_Menu();
void Management_Menu();
void User_Menu();
void Add_Admin();
void Remove_Admin();
void Display_All_Admin();
void Search_Admin();
void Change_Password_Admin();
void Add_Manager();
void Remove_Manager();
void Display_All_Manager();
void Search_Manager();
void Add_User();
void Display_All_User();
void Remove_User();
void Search_User();
void Change_Password_User();
void Change_Vehicle_Info();
void Display_All_Vehicle();
void Add_Ticket();
void Display_All_Ticket();
void Search_Ticket();
void Remove_Ticket();
void User_Display_Ticket();
void Pay_Ticket();
void Change_Password_Manager();
void Store_Admin_Data(char admin_People_File_Name[]);
void Store_Manager_Data(char manager_People_File_Name[]);
void Store_User_Data(char user_People_File_Name[]);
void Store_Ticket_Data();
void Initial_Admin_Vector(char admin_People_File_Name[]){
ifstream in;
Admin a;
in.open(admin_People_File_Name);
while(getline(in,a.name,',')){
getline(in,a.id,',');
getline(in,a.password);
admin_Vector.push_back(a);
}
in.close();
}
void Initial_Manager_Vector(char management_People_File_Name[]){
ifstream in;
Manager m;
in.open(management_People_File_Name);
while(getline(in,m.name,',')){
getline(in,m.id,',');
getline(in,m.password);
manager_Vector.push_back(m);
}
in.close();
}
void Initial_User_Vector(char user_People_File_Name[]){
ifstream in;
User u;
in.open(user_People_File_Name);
while(getline(in,u.name,',')){
getline(in,u.id,',');
getline(in,u.password,',');
getline(in,u.makeModel1,',');
getline(in,u.makeModel2,',');
getline(in,u.year,',');
getline(in,u.plate);
user_Vector.push_back(u);
}
in.close();
}
void Initial_Ticket_Vector(){
ifstream in;
Ticket t;
in.open("ticket.csv");
while(getline(in,t.ticket_Number,',')){
getline(in,t.ticket_Amount,',');
getline(in,t.ticket_Issued,',');
getline(in,t.ticket_Status,',');
getline(in,t.reason,',');
getline(in,t.plate);
ticket_Vector.push_back(t);
}
in.close();
}
void Login_System(){
int first_Option;
bool flag = true;
do{
cout << "Type in 1 to Log in to the system." << endl;
cout << "Type in 2 to register to the system." << endl;
cout << "Type in 3 to exit the system." << endl;
cout << "Option: ";
cin >> first_Option;
switch(first_Option){
case 1:
Checking_Id_Password();
flag = false;
break;
case 2:
Add_User();
break;
case 3:
flag = false;
break;
}
}while(flag);
}
void Checking_Id_Password(){
string Id1;
string Password1;
bool flag = true;
do{
cout << "Enter id: ";
cin >> Id1;
cout << "Enter password: ";
cin >> Password1;
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
if(Id1 == admin_it->id && Password1 == admin_it->password){
cout << endl;
Admin_Menu();
flag = false;
break;
}
}
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
if(Id1 == manager_it->id && Password1 == manager_it->password){
cout << endl;
Management_Menu();
flag = false;
break;
}
}
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
if(Id1 == user_it->id && Password1 == user_it->password){
cout << endl;
User_Menu();
flag = false;
break;
}
}
if(flag){
cout << "ID or Password is wrong. Enter your credentials again."<<endl<<endl;
}
}while(flag);
}
void Admin_Menu(){
int Admin_Option;
bool flag = true;
do{
cout << "Select the following option for a particular task." << endl;
cout << "Select 1 to add new administrative employee." << endl;
cout << "Select 2 to remove an administrative employee." << endl;
cout << "Select 3 to view all administrative employee information." << endl;
cout << "Select 4 to search information of a specific administrative employee." << endl;
cout << "Select 5 to change password." << endl;
cout << "Select 6 to add new management employee." << endl;
cout << "Select 7 to remove a management employee." << endl;
cout << "Select 8 to view all management employee information." << endl;
cout << "Select 9 to search information of a specific management employee." << endl;
cout << "Select 10 to remove an user." << endl;
cout << "Select 11 to view all user information." << endl;
cout << "Select 12 to search information of a specific user." << endl;
cout << "Select 15 to Log out." << endl;
cout << "Option: ";
cin >> Admin_Option;
switch(Admin_Option){ //switch to manage the option selection
case 1:
Add_Admin();
break;
case 2:
Remove_Admin();
break;
case 3:
Display_All_Admin();
break;
case 4:
Search_Admin();
break;
case 5:
Change_Password_Admin();
break;
case 6:
Add_Manager();
break;
case 7:
Remove_Manager();
break;
case 8:
Display_All_Manager();
break;
case 9:
Search_Manager();
break;
case 10:
Remove_User();
break;
case 11:
Display_All_User();
break;
case 12:
Search_User();
break;
case 15:
flag = false;
cout << endl;
Login_System();
break;
}
}while(flag);
}
void Management_Menu(){
int Manager_Option;
bool flag = true;
do{
cout << "Select the following option for a particular task." << endl;
cout << "Select 1 to remove an user." << endl;
cout << "Select 2 to view all user information." << endl;
cout << "Select 3 to search information of a specific user." << endl;
cout << "Select 4 to issue a ticket." << endl;
cout << "Select 5 to view all the ticket information." << endl;
cout << "Select 6 to view a specific ticket information in details." << endl;
cout << "Select 7 to remove a specific ticket information." << endl;
cout << "Select 8 to change password." << endl;
cout << "Select 9 to Log out." << endl;
cout << "Option: ";
cin >> Manager_Option;
switch(Manager_Option){ //ditto
case 1:
Remove_User();
break;
case 2:
Display_All_User();
break;
case 3:
Search_User();
break;
case 4:
Add_Ticket();
break;
case 5:
Display_All_Ticket();
break;
case 6:
Search_Ticket();
break;
case 7:
Remove_Ticket();
break;
case 8:
Change_Password_Manager();
break;
case 9:
flag = false;
cout << endl;
Login_System();
break;
}
}while(flag);
}
void User_Menu(){
int User_Option;
bool flag = true;
do{
cout << "Select the following option for a particular task." << endl;
cout << "Select 1 to change password." << endl;
cout << "Select 2 to change vehicle information." << endl;
cout << "Select 3 to view vehicle information." << endl;
cout << "Select 4 to view all ticket information." << endl;
cout << "Select 5 to pay a ticket amount." << endl;
cout << "Select 8 to Log out." << endl;
cout << "Option: ";
cin >> User_Option;
switch(User_Option){
case 1:
Change_Password_User();
break;
case 2:
Change_Vehicle_Info();
break;
case 3:
Display_All_Vehicle();
break;
case 4:
User_Display_Ticket();
break;
case 5:
Pay_Ticket();
break;
case 8:
flag = false;
cout << endl;
Login_System();
break;
}
}while(flag);
}
void Add_Admin(){
string add_name;
string add_id;
string add_password;
Admin a;
srand((unsigned)time(NULL));
bool flag = true;
char temp1[100];
int temp2;
cout << "Enter administrative employee name: ";
cin.ignore();
getline(cin,add_name);
cout << "Auto generated id for this administrative employee account is: ";
do{
temp2 = rand()%400 + 101;
sprintf(temp1, "%d", temp2);
add_id = temp1;
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
if(add_id == admin_it->id){
break;
}
}
if(admin_it == admin_Vector.end()){
flag = false;
}
}while(flag);
cout << add_id << endl;
cout << "Set a password for this administrative employee account: ";
getline(cin,add_password);
cout << "administrative employee entry is complete." << endl << endl;
a.name = add_name;
a.id = add_id;
a.password = add_password;
admin_Vector.push_back(a);
}
void Remove_Admin(){
bool flag = true;
string remove_id;
cout << "Enter the administrative employee's Id: ";
cin >> remove_id;
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
if(admin_it->id == remove_id){
admin_Vector.erase(admin_it);
cout << "Administrative employee is removed." <<endl <<endl;
flag = false;
break;
}
}
if(flag){
cout << "Fail to remove the administrative employee's information!" << endl <<endl;
}
}
void Display_All_Admin(){
cout << "All Administrative Employee Information" << endl;
cout << "---------------------------------------" << endl;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
cout << admin_it->name << "\t" << "\t" << "\t";
cout << admin_it->id << endl;
}
cout <<endl << endl;
}
void Search_Admin(){
bool flag = true;
string search_id;
cout << "Enter the administrative employee's id: ";
cin >> search_id;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
if(admin_it->id == search_id){
cout << admin_it->name << "\t" << "\t" << "\t";
cout << admin_it->id << endl << endl;
flag = false;
break;
}
}
if(flag){
cout << "Can't find this administrative employee's information!" << endl << endl;
}
cout <<endl << endl;
}
void Change_Password_Admin(){
string new_password;
cout << "Enter a new password: ";
cin >> new_password;
admin_it->password = new_password;
cout << "You have changed your password successfully!" <<endl;
cout << endl;
}
void Add_Manager(){
string add_name;
string add_id;
string add_password;
Manager m;
srand((unsigned)time(NULL));
bool flag = true;
char temp1[100];
int temp2;
cout << "Enter management employee name: ";
cin.ignore();
getline(cin,add_name);
cout << "Auto generated id for this management employee account is: ";
do{
temp2 = rand()%500 + 501;
sprintf(temp1, "%d", temp2);
//itoa(temp2,temp1,10);
add_id = temp1;
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
if(add_id == manager_it->id){
break;
}
}
if(manager_it == manager_Vector.end()){
flag = false;
}
}while(flag);
cout << add_id << endl;
cout << "Set a password for this management employee account: ";
getline(cin,add_password);
cout << "Management employee entry is complete." << endl << endl;
m.name = add_name;
m.id = add_id;
m.password = add_password;
manager_Vector.push_back(m);
}
void Remove_Manager(){
bool flag = true;
string remove_id;
cout << "Enter the management employee's id: ";
cin >> remove_id;
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
if(manager_it->id == remove_id){
manager_Vector.erase(manager_it);
cout << "Management employee is removed." <<endl <<endl;
flag = false;
break;
}
}
if(flag){
cout << "Fail to remove the management employee's information!" << endl <<endl;
}
}
void Display_All_Manager(){
cout << "------All Employee Information-----" << endl;
cout << "-----------------------------------" << endl;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
cout << manager_it->name << "\t" << "\t" << "\t";
cout << manager_it->id << endl;
}
cout <<endl << endl;
}
void Search_Manager(){
bool flag = true;
string search_id;
cout << "Enter the management employee's id: ";
cin >> search_id;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
if(manager_it->id == search_id){
cout << manager_it->name << "\t" << "\t" << "\t";
cout << manager_it->id << endl << endl;
flag = false;
break;
}
}
if(flag){
cout << "Can't find this management employee's information!" << endl << endl;
}
cout << endl << endl;
}
void Add_User(){
string add_name;
string add_id;
string add_password;
string add_makeModel1;
string add_makeModel2;
string add_year;
string add_plate;
User u;
bool flag = true;
cout << "Enter name: ";
cin.ignore();
getline(cin,add_name);
do{
cout << "Enter id: ";
//cin.ignore();
getline(cin,add_id);
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
if(add_id == user_it->id){
cout << "This id is already in use! Please Enter again!" << endl;
break;
}
}
if(user_it == user_Vector.end()){
flag = false;
}
}while(flag);
cout << "Enter password: ";
//cin.ignore();
getline(cin,add_password);
cout << "Now enter your vehicle information..." << endl;
cout << "Enter vehicle make: ";
//cin.ignore();
getline(cin,add_makeModel1);
cout << "Enter vehicle model: ";
//cin.ignore();
getline(cin,add_makeModel2);
cout << "Enter vehicle year: ";
//cin.ignore();
getline(cin,add_year);
cout << "Enter vehicle plate number: ";
//cin.ignore();
getline(cin,add_plate);
cout << "Registration is complete" << endl << endl;
u.name = add_name;
u.id = add_id;
u.password = add_password;
u.makeModel1 = add_makeModel1;
u.makeModel2 = add_makeModel2;
u.year = add_year;
u.plate = add_plate;
user_Vector.push_back(u);
}
void Remove_User(){
bool flag = true;
string remove_id;
cout << "Enter the user's id: ";
cin >> remove_id;
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
if(user_it->id == remove_id){
user_Vector.erase(user_it);
cout << "User is removed." <<endl <<endl;
flag = false;
break;
}
}
if(flag){
cout << "Fail to remove the user's information!" << endl <<endl;
}
}
void Display_All_User(){
cout << "-----------------------------------------------------All User Information-------------------------------------------------------" << endl;
cout << "--------------------------------------------------------------------------------------------------------------------------------" << endl;
cout << " Name ID Make Model Year Plate Number" << endl;
cout << "--------------------------------------------------------------------------------------------------------------------------------" << endl;
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
cout << user_it->name << "\t" << "\t" << "\t";
cout << user_it->id << "\t" << "\t";
cout << user_it->makeModel1 << "\t"<< "\t";
cout << user_it->makeModel2 << "\t" << "\t"<< "\t";
cout << user_it->year << "\t" << "\t";
cout << user_it->plate << endl;
}
cout <<endl << endl;
}
void Search_User(){
bool flag = true;
string search_id;
cout << "Enter the user's id: ";
cin >> search_id;
cout << " Name ID Make Model Year Plate Number" << endl;
cout << "--------------------------------------------------------------------------------------------------------------------------------" << endl;
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
if(user_it->id == search_id){
cout << user_it->name << "\t" << "\t" << "\t";
cout << user_it->id << "\t" << "\t";
cout << user_it->makeModel1 << "\t"<< "\t";
cout << user_it->makeModel2 << "\t" << "\t"<< "\t";
cout << user_it->year << "\t" << "\t";
cout << user_it->plate << endl;
flag = false;
break;
}
}
if(flag){
cout << "Can't find this user's information!" << endl << endl;
}
cout << endl << endl;
}
void Change_Password_User(){
string new_password;
cout << "Enter a new password: ";
cin >> new_password;
user_it->password = new_password;
cout << "You have changed your password successfully!" <<endl;
cout << endl;
}
void Change_Vehicle_Info(){
string new_MakeModel1;
string new_MakeModel2;
string new_Year;
string new_Plate;
cout << "Enter the new vehicle make: ";
cin.ignore();
getline(cin,new_MakeModel1);
cout << "Enter the new vehicle model: ";
//cin.ignore();
getline(cin,new_MakeModel2);
cout << "Enter the new vehicle year: ";
//cin.ignore();
getline(cin,new_Year);
cout << "Enter the new vehicle plate number: ";
//cin.ignore();
getline(cin,new_Plate);
user_it->makeModel1 = new_MakeModel1;
user_it->makeModel2 = new_MakeModel2;
user_it->year = new_Year;
user_it->plate = new_Plate;
cout << "You have changed your vehicle information successfully!" <<endl << endl;
}
void Display_All_Vehicle(){
cout << endl;
cout << "Vehicle make: " << user_it->makeModel1 << endl;
cout << "Vehicle model: " << user_it->makeModel2 << endl;
cout << "Vehicle year: " << user_it->year << endl;
cout << "Vehicle plate number: " << user_it->plate << endl << endl;
}
void Add_Ticket(){
string add_ticket_number;
string add_ticket_amount;
string add_Reason;
string add_plate;
Ticket t;
srand((unsigned)time(NULL));
bool flag = true;
char temp1[100];
int temp2;
string ticketIssued;
string ticketStat;
cout << "Auto generated ticket number is: ";
do{
temp2 = rand()%49000 + 1001;
sprintf(temp1, "%d", temp2);
//itoa(temp2,temp1,10);
add_ticket_number = temp1;
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
if(add_ticket_number == ticket_it->ticket_Number){
break;
}
}
if(ticket_it == ticket_Vector.end()){
flag = false;
}
}while(flag);
cout << add_ticket_number << endl;
cout << "Enter ticket amount: ";
cin.ignore();
getline(cin,add_ticket_amount);
cout << "Reason of ticket: ";
getline(cin,add_Reason);
cout << "Enter vehicle plate number: ";
getline(cin,add_plate);
cout << "Ticket has been recorded successfully."<<endl<<endl;
ticketIssued = manager_it->id;
ticketStat = "Unpaid";
t.ticket_Number = add_ticket_number;
t.ticket_Amount = add_ticket_amount;
t.ticket_Issued = ticketIssued;
t.ticket_Status = ticketStat;
t.reason = add_Reason;
t.plate = add_plate;
ticket_Vector.push_back(t);
}
void Display_All_Ticket(){
cout << "Ticket number Ticket amount Issued by Ticket Status Reason" << endl;
cout << "--------------------------------------------------------------------------" << endl;
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
cout << "\t" << ticket_it->ticket_Number << "\t" << "\t";
cout << "$" << ticket_it->ticket_Amount << "\t" << "\t";
cout << ticket_it->ticket_Issued << "\t"<< "\t";
cout << ticket_it->ticket_Status << "\t"<< "\t";
cout << ticket_it->reason << endl;
}
cout <<endl << endl;
}
void Search_Ticket(){
bool flag = true;
string search_number;
cout << "Enter the ticket number: ";
cin.ignore();
getline(cin,search_number);
cout << "Ticket number Ticket amount Issued by Ticket Status Reason" << endl;
cout << "--------------------------------------------------------------------------" << endl;
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
if(ticket_it->ticket_Number == search_number){
cout << "\t" << ticket_it->ticket_Number << "\t" << "\t";
cout << "$" << ticket_it->ticket_Amount << "\t" << "\t";
cout << ticket_it->ticket_Issued << "\t"<< "\t";
cout << ticket_it->ticket_Status << "\t"<< "\t";
cout << ticket_it->reason << endl;
}
}
cout <<endl << endl;
}
void Remove_Ticket(){
bool flag = true;
string remove_number;
cout << "Enter the ticket number: ";
cin.ignore();
getline(cin,remove_number);
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
if(ticket_it->ticket_Number == remove_number){
ticket_Vector.erase(ticket_it);
cout << endl;
cout << "Ticket is removed." <<endl <<endl;
flag = false;
break;
}
}
if(flag){
cout << "Fail to remove the ticket!" << endl <<endl;
}
}
void Change_Password_Manager(){
string new_password;
cout << "Enter a new password: ";
cin >> new_password;
manager_it->password = new_password;
cout << "You have changed your password successfully!" <<endl;
cout << endl;
}
void User_Display_Ticket(){
cout << "Ticket number Ticket amount Issued by Ticket Status Reason" << endl;
cout << "--------------------------------------------------------------------------" << endl;
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
if(user_it->plate == ticket_it->plate){
cout << "\t" << ticket_it->ticket_Number << "\t" << "\t";
cout << "$" << ticket_it->ticket_Amount << "\t" << "\t";
cout << ticket_it->ticket_Issued << "\t"<< "\t";
cout << ticket_it->ticket_Status << "\t"<< "\t";
cout << ticket_it->reason << endl;
break;
}
}
cout <<endl << endl;
}
void Pay_Ticket(){
string YorN;
cout << "Do you want to pay $" << ticket_it->ticket_Amount << " right now? (Type in Yes or No):";
cin >> YorN;
if(YorN == "Yes" || YorN == "YES" || YorN == "yes"){
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
if(user_it->plate == ticket_it->plate){
ticket_it->ticket_Amount = "0";
ticket_it->ticket_Status = "Paid";
cout << "The ticket amount is paid off." << endl << endl;
break;
}
}
}
else if(YorN == "No" || YorN == "NO" || YorN == "no"){
cout << endl << endl;
}
}
void Store_Admin_Data(char admin_People_File_Name[]){ //Store all the changes to the admin's data in to the file.
ofstream out;
out.open(admin_People_File_Name);
for(admin_it = admin_Vector.begin(); admin_it != admin_Vector.end(); admin_it++){
out << admin_it->name << ",";
out << admin_it->id << ",";
out << admin_it->password << endl;
}
out.close();
}
void Store_Manager_Data(char management_People_File_Name[]){ //Store all the changes to the manager's data in to the file.
ofstream out;
out.open(management_People_File_Name);
for(manager_it = manager_Vector.begin(); manager_it != manager_Vector.end(); manager_it++){
out << manager_it->name << ",";
out << manager_it->id << ",";
out << manager_it->password << endl;
}
out.close();
}
void Store_User_Data(char user_People_File_Name[]){ //Store all the changes to the user's data in to the file.
ofstream out;
out.open(user_People_File_Name);
for(user_it = user_Vector.begin(); user_it != user_Vector.end(); user_it++){
out << user_it->name << ",";
out << user_it->id << ",";
out << user_it->password << ",";
out << user_it->makeModel1 << ",";
out << user_it->makeModel2 << ",";
out << user_it->year << ",";
out << user_it->plate << endl;
}
out.close();
}
void Store_Ticket_Data(){ //Store all the changes to the ticket's data in to the file.
ofstream out;
out.open("ticket.csv");
for(ticket_it = ticket_Vector.begin(); ticket_it != ticket_Vector.end(); ticket_it++){
out << ticket_it->ticket_Number << ",";
out << ticket_it->ticket_Amount << ",";
out << ticket_it->ticket_Issued << ",";
out << ticket_it->ticket_Status << ",";
out << ticket_it->reason << ",";
out << ticket_it->plate << endl;
}
out.close();
}
int main(){
//char array to store the user input for the file search
char input_File_Name[100];
char admin_People_File_Name[100];
char management_People_File_Name[100];
char user_People_File_Name[100];
ifstream in;
Parking_Lot_info *pli; //Structure pointer
int pln; //Parking lot number
int max_Space = 8; // Max number of parking space in a row
int t = 0; //Determine when it needs to switch to the next row
//relevant strings for admin, management, and users
string admin_Name, admin_Id, admin_Password;
string management_Name, management_Id, management_Password;
string user_Name, user_Id, user_Password;
string user_Make_Model1, user_Make_Model2, user_Year, user_Plate_Number;
//get filename
cout << "Enter file name: ";
cin.getline(input_File_Name,100);
in.open(input_File_Name);
if(!in){
cout << "Can't open the file!" << endl; //error check
return 0;
}
in >> pln;
pli = new Parking_Lot_info[pln];
//read data in for parking lot
for(int i=0; i<pln; i++){
in >> pli[i].regular;
in >> pli[i].motorcycle;
in >> pli[i].disability;
pli[i].total_Space = pli[i].regular + pli[i].motorcycle + pli[i].disability;
//display the initial read in data for parking lot
cout << "Parking lot number: " << i+1 << endl;
cout << "Number of parking space: " << pli[i].total_Space << endl;
cout << "Number of regular parking space: " << pli[i].regular << endl;
cout << "Number of motorcycle parking space: " << pli[i].motorcycle << endl;
cout << "Number of disability parking space: " << pli[i].disability << endl;
cout << "Parking space layout is shown below." << endl;
cout << "---------------------------------" << endl;
cout << "|";
t = 0; //Reset t to 0;
for(int j=0; j <pli[i].motorcycle; j++){
t++;
cout << " M " << "|";
if(t%max_Space == 0){
cout << endl;
cout << "---------------------------------" << endl;
}
}
for(int k=0; k <pli[i].disability; k++){
t++;
cout << " D " << "|";
if(t%max_Space == 0){
cout << endl;
cout << "---------------------------------" << endl;
}
}
for(int l=0; l <pli[i].regular; l++){
t++;
cout << " R " << "|";
if(t%max_Space == 0){
cout << endl;
cout << "---------------------------------" << endl;
}
}
cout << endl;
cout << "---------------------------------" << endl;
cout << endl;
}
//read in admin, management, and user data
in >> admin_People_File_Name;
in >> management_People_File_Name;
in >> user_People_File_Name;
in.close();
//display initial administrative employee info
in.open(admin_People_File_Name);
cout << "All Administrative Employee Information" << endl;
cout << "---------------------------------------" << endl;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
while(getline(in,admin_Name,',')){
cout << admin_Name << "\t" << "\t" << "\t";
getline(in,admin_Id,',');
cout << admin_Id << endl;
getline(in,admin_Password);
}
cout << endl;
in.close();
//display all employee information
in.open(management_People_File_Name);
cout << "------All Employee Information-----" << endl;
cout << "-----------------------------------" << endl;
cout << " Name ID" << endl;
cout << "-----------------------------------" << endl;
while(getline(in,management_Name,',')){
cout << management_Name << "\t" << "\t" << "\t";
getline(in,management_Id,',');
cout << management_Id << endl;
getline(in,management_Password);
}
cout << endl;
in.close();
//display all user information
in.open(user_People_File_Name);
cout << "-----------------------------------------------------All User Information-------------------------------------------------------" << endl;
cout << "--------------------------------------------------------------------------------------------------------------------------------" << endl;
cout << " Name ID Make Model Year Plate Number" << endl;
cout << "--------------------------------------------------------------------------------------------------------------------------------" << endl;
while(getline(in,user_Name,',')){
cout << user_Name << "\t" << "\t" << "\t";
getline(in,user_Id,',');
cout << user_Id << "\t" << "\t";
getline(in,user_Password,',');
getline(in,user_Make_Model1,',');
cout << user_Make_Model1 << "\t"<< "\t";
getline(in,user_Make_Model2,',');
cout << user_Make_Model2 << "\t" << "\t"<< "\t";
getline(in,user_Year,',');
cout << user_Year << "\t" << "\t";
getline(in,user_Plate_Number);
cout << user_Plate_Number << endl;
}
cout << endl;
in.close();
Initial_Admin_Vector(admin_People_File_Name);
Initial_Manager_Vector(management_People_File_Name);
Initial_User_Vector(user_People_File_Name);
Initial_Ticket_Vector();
Login_System();
//store NEW admin, manager, user, and ticket data
Store_Admin_Data(admin_People_File_Name);
Store_Manager_Data(management_People_File_Name);
Store_User_Data(user_People_File_Name);
Store_Ticket_Data();
return 0;
}

Wing Project 1

aedrarian
0 likes • Oct 31, 2021
C++
//Get data file at https://codecatch.net/post.php?postID=91e87d73
//Iteration 1 of Wing Project. Solution breaks down around n=35
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
using namespace std;
int getSum(map<int, int> list);
void readData(map<int, float>* data);
void lowestPrice();
void findSums(int n, vector<map<int, int>>* sumsList, map<int, float>* data);
//void findSum(map<int, int> currList, int x, int n, vector<map<int, int>>* sumsList);
void findSum(map<int, int> currList, int x, int n, vector<map<int, int>>* sumsList, map<int, float>* data);
float getPrice(map<int, int> set, map<int, float>* data);
template <typename S>
ostream& operator<<(ostream& os, const vector<S>& vector)
{
// Printing all the elements using <<
for (auto element : vector) {
os << element << " ";
}
return os;
}
bool operator==(map<int, int> m1, map<int, int> m2)
{
if(m1.size() != m2.size())
return false;
bool ret = true;
for(auto it = m1.begin(); it !=m1.end() && ret; it++)
{
if(ret && m1.count(it->first) != m2.count(it->first))
ret = false;
if(ret && m1.count(it->first) == 1)
{
if(m1.at(it->first) != m2.at(it->first))
ret = false;
}
}
return ret;
}
int main()
{
map<int, float> data;
readData(&data);
vector<map<int, int>> *sumsList;
sumsList = new vector<map<int, int>>;
findSums(40, sumsList, &data);
for(auto el : *sumsList)
{
for(auto it = el.begin(); it != el.end(); it++)
{
cout << it->first << "->" << it->second << " ";
}
cout << getPrice(el, &data) << endl;
}
return 0;
}
/* Returns the price of wings given a set of numbers of wings to buy.
* Returns -1 if the set contains a number that is not possible to buy.
*/
float getPrice(map<int, int> set, map<int, float>* data)
{
float price = 0;
for(auto it = set.begin(); it != set.end(); it++)
{
//If data doesn't contain an element of set, return -1
if(data->count(it->first) == 0)
return -1;
price += data->at(it->first) * it->second; //pricePerPacket * qtyOfPackets
}
return price;
}
/* Adds the elements of list.
* Suppose mapping is <num, qty>.
* Returns sum(num*qty)
*/
int getSum(map<int, int> list)
{
int sum = 0;
for(auto it = list.begin(); it != list.end(); it++)
sum += it->first * it->second;
return sum;
}
void findSums(int n, vector<map<int, int>>* sumsList, map<int, float>* data)
{
map<int, int> currList;
//Recur when currSum < n
auto it = data->begin();
while(it->first <= n && it != data->end())
{
findSum(currList, it->first, n, sumsList, data);
it++;
}
}
void findSum(map<int, int> currList, int x, int n, vector<map<int, int>>* sumsList, map<int, float>* data)
{
//Append x to currList
if(currList.count(x) == 0)
currList.emplace(x, 1);
else
{
int val = 1+ currList.at(x);
currList.erase(x);
currList.emplace(x, val);
}
//Determine current sum, check for return cases
int currSum = getSum(currList);
if(currSum > n)
return;
else if(currSum == n)
{
//Check to make sure no duplicates
for(auto list : *sumsList)
{
if(list == currList)
return;
}
sumsList->push_back(currList);
return;
}
//Recur when currSum < n
auto it = data->begin();
while(it->first <= n-x && it != data->end())
{
findSum(currList, it->first, n, sumsList, data);
it++;
}
}
void readData(map<int, float>* data)
{
ifstream file ("./data", ifstream::in);
if(file.is_open())
{
int i = 0;
while(!file.eof())
{
float wings, price;
string skipnl;
file >> wings;
file >> price;
data->emplace(wings, price);
getline(file, skipnl);
i++;
}
}
}

Get Coefficient

AustinLeath
0 likes • Nov 18, 2022
C++
#include <iostream>
using namespace std;
/* Function: get_coeff
Parameters: double& coeff, int pos passed from bb_4ac
Return: type is void so no return, but does ask for user to input data that establishes what a b and c are.
*/
void get_coeff(double& coeff, int pos) {
char position;
if(pos == 1) {
position = 'a';
} else if(pos == 2) { //a simple system to determine what coefficient the program is asking for.
position = 'b';
} else {
position = 'c';
}
cout << "Enter the co-efficient" << position << ":"; //prompt to input coeff
cin >> coeff; //input coeff
}
/* Function: bb_4ac
Parameters: no parameters passed from main, but 3 params established in function, double a, b, c.
Return: b * b - 4 * a * c
*/
double bb_4ac() {
double a, b, c; //coefficients of a quadratic equation
get_coeff(a, 1); // call function 1st time
get_coeff(b, 2); // call function 2nd time
get_coeff(c, 3); // call function 3rd time
return b * b - 4 * a * c; //return b * b - 4 * a * c
}
int main() {
cout << "Function to calculate the discriminant of the equation. . . " << endl;
double determinate = bb_4ac(); //assign double determinate to bb_4ac function
cout << "The discriminant for given values is: " << determinate << endl; //output the determinate!
}