Skip to main content

Wing Project 1

0 likes • Oct 31, 2021
C++
Loading...
Download

More C++ Posts

CSCE 1040 Lab 9

AustinLeath
0 likes • Nov 18, 2022
C++
#include <iostream>
#include "PlaylistNode.h"
using namespace std;
void PrintMenu(string title);
int main() {
string plTitle;
cout << "Enter playlist's title:" << endl;
getline(cin, plTitle);
PrintMenu(plTitle);
return 0;
}
void PrintMenu(string title) {
Playlist list;
string id;
string sname;
string aname;
int length;
int oldPos;
int newPos;
char choice;
while(true) {
cout << endl << title << " PLAYLIST MENU" << endl;
cout << "a - Add song" << endl;
cout << "d - Remove song" << endl;
cout << "c - Change position of song" << endl;
cout << "s - Output songs by specific artist" << endl;
cout << "t - Output total time of playlist (in seconds)" << endl;
cout << "o - Output full playlist" << endl;
cout << "q - Quit" << endl << endl;
cout << "Choose an option:" << endl;
cin >> choice;
cin.ignore();
if (choice == 'q') {
exit(1);
}
else if (choice == 'a') {
cout << "\nADD SONG" << endl;
cout << "Enter song's unique ID: ";
cin >> id;
cin.ignore();
cout << "Enter song's name: ";
getline(cin,sname);
cout << "Enter artist's name: ";
getline(cin,aname);
cout << "Enter song's length (in seconds): ";
cin >> length;
list.AddSong(id, sname, aname, length);
}
else if (choice == 'd') {
cout << "\nREMOVE SONG" << endl;
cout << "Enter song's unique ID: ";
cin >> id;
list.RemoveSong(id);
}
else if (choice == 'c') {
cout << "\nCHANGE POSITION OF SONG" << endl;
cout << "Enter song's current position: ";
cin >> oldPos;
cout << "Enter new position for song: ";
cin >> newPos;
list.ChangePosition(oldPos, newPos);
}
else if (choice == 's') {
cout << "\nOUTPUT SONGS BY SPECIFIC ARTIST" << endl;
cout << "Enter artist's name: ";
getline(cin, aname);
list.SongsByArtist(aname);
}
else if (choice == 't') {
cout << "\nOUTPUT TOTAL TIME OF PLAYLIST (IN SECONDS)" << endl;
cout << "Total time: " << list.TotalTime() << " seconds" << endl;
}
else if (choice == 'o') {
cout << endl << title << " - OUTPUT FULL PLAYLIST" << endl;
list.PrintList();
}
else {
cout << "Invalid menu choice! Please try again." << endl;
}
}
}

minimum matrix values

AustinLeath
0 likes • Nov 18, 2022
C++
#include <iostream>
using namespace std;
int main() {
const int ROW_SIZE = 2;
const int COLUMN_SIZE = 5; //establish all variables
int matrix[ROW_SIZE][COLUMN_SIZE];
int minVal;
for (int i = 0; i < ROW_SIZE; ++i) // for loop to ask user to enter data.
{
for (int h = 0; h < COLUMN_SIZE; ++h) {
cout << "Enter data for row #" << i + 1 << " and column #" << h + 1 << ": ";
cin >> matrix[i][h];
}
}
cout << "You entered: " << endl;
for (int i = 0; i < ROW_SIZE; ++i) //for statements to output the array neatly
{
for (int h = 0; h < COLUMN_SIZE; ++h) {
cout << matrix[i][h] << "\t";
}
cout << endl;
}
cout << "Minimum for each row is: {";
for (int i = 0; i < ROW_SIZE; i++) //for statements to find the minimum in each row
{
minVal = matrix[i][0];
for (int h = 0; h < COLUMN_SIZE; h++) {
if (matrix[i][h] < minVal) // if matrix[i][h] < minVal -> minVal = matrix[i][h];
{
minVal = matrix[i][h];
}
}
cout << minVal << ", ";
}
cout << "}" << endl;
cout << "Minimum for each column is: {";
for (int i = 0; i < COLUMN_SIZE; i++) //for statements to find the minimum in each column
{
minVal = matrix[0][i];
for (int h = 0; h < ROW_SIZE; h++) {
if (matrix[h][i] < minVal) //replaces minVal with array index for that column that is lowest
{
minVal = matrix[h][i];
}
}
cout << minVal << ", ";
}
cout << "}" << endl;
return 0;
}

UNT CSCE 1040 Goat Program

AustinLeath
0 likes • Nov 18, 2022
C++
#include "goat.h" //include goat.h
void Goat::setBreed(string breed) {
this->breed = breed;
}
void Goat::setWeight(float weight) {
this->weight = weight;
}
void Goat::setName(string name) {
this->name = name;
}
void Goat::setGender(char gender) {
this->gender = gender;
}
void Goat::setSpayed(bool goatIsSpayed) {
this->goatIsSpayed = goatIsSpayed;
}
void Goat::setRegistrationID(string registrationID) {
this->registrationID = registrationID;
}
void Goat::setColor(string color) {
this->color = color;
}
void Goat::setOtherComments(string otherComments) {
this->otherComments = otherComments;
}
string Goat::getBreed() {
return breed;
}
float Goat::getWeight() {
return weight;
}
string Goat::getName() {
return name;
}
char Goat::getGender() {
return gender;
}
bool Goat::getSpayed() {
return goatIsSpayed;
}
string Goat::getRegistrationID() {
return registrationID;
}
string Goat::getColor() {
return color;
}
string Goat::getOtherComments() {
return otherComments;
}
Goat::Goat() {
breed = "";
weight = 0.0;
name = "";
gender = '\0';
goatIsSpayed = false;
registrationID = "";
color = "";
otherComments = "";
}
Goat::Goat(string goatBreed, float goatWeight, string goatName, char goatGender, bool goatSpayedStatus, string goatRegistrationID, string goatColor, string goatOtherComments) {
breed = goatBreed;
weight = goatWeight;
name = goatName;
gender = goatGender;
goatIsSpayed = goatSpayedStatus;
registrationID = goatRegistrationID;
color = goatColor;
otherComments = goatOtherComments;
}
Goat::~Goat() {
cout << "goat destroyed" << endl;
}
void Goat::printinfo() {
cout << "Breed: " << breed << endl << "weight: " << weight << endl << "Name: " << name << endl << "Gender: " << gender << endl << "is Spayed: ";
if(goatIsSpayed) { //here I do a logical test on boolean goatIsSpayed. if true cout << true else cout << false
cout << "True";
} else {
cout << "False";
}
cout << endl << "Registration ID: " << registrationID << endl << "Color Description: " << color << endl << "Other Comments: " << otherComments << endl << endl;
}

C++ SigFigs

ThiccDaddyLOAF
0 likes • Sep 7, 2022
C++
#include <iostream>
#include <cstring>
int main(int argc, char** argv){
//With decimal
if(strstr(argv[1], ".") != nullptr){
int i = 0;
//Skip i to first non 0 digit
while(argv[1][i] < '1' || argv[1][i] > '9') ++i;
//If digit comes before decimal
if((argv[1] + i) < strstr(argv[1], ".")){ //Good example of pointer arithmetic
std::cout << strlen(argv[1] + i) - 1 << std::endl; //Another good example
}else{
//If digit is after decimal
std::cout << strlen(argv[1] + i) << std::endl;
}
}else{
//Without decimal
int m = 0;
int i = 0;
while(argv[1][i] < '1' || argv[1][i] > '9') ++i; //In case of some number like 0045
for(; argv[1][i] != '\0'; ++i){
if(argv[1][i] >= '1' && argv[1][i] <= '9') m = i + 1;
}
std::cout << m << std::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.
}
}
}

Hash Table Example

AustinLeath
0 likes • Nov 18, 2022
C++
using namespace std;
class Hash
{
int BUCKET; // No. of buckets
// Pointer to an array containing buckets
list<int> *table;
public:
Hash(int V); // Constructor
// inserts a key into hash table
void insertItem(int x);
// deletes a key from hash table
void deleteItem(int key);
// hash function to map values to key
int hashFunction(int x) {
return (x % BUCKET);
}
void displayHash();
};
Hash::Hash(int b)
{
this->BUCKET = b;
table = new list<int>[BUCKET];
}
void Hash::insertItem(int key)
{
int index = hashFunction(key);
table[index].push_back(key);
}
void Hash::deleteItem(int key)
{
// get the hash index of key
int index = hashFunction(key);
// find the key in (inex)th list
list <int> :: iterator i;
for (i = table[index].begin();
i != table[index].end(); i++) {
if (*i == key)
break;
}
// if key is found in hash table, remove it
if (i != table[index].end())
table[index].erase(i);
}
// function to display hash table
void Hash::displayHash() {
for (int i = 0; i < BUCKET; i++) {
cout << i;
for (auto x : table[i])
cout << " --> " << x;
cout << endl;
}
}
// Driver program
int main()
{
// array that contains keys to be mapped
int a[] = {15, 11, 27, 8, 12};
int n = sizeof(a)/sizeof(a[0]);
// insert the keys into the hash table
Hash h(7); // 7 is count of buckets in
// hash table
for (int i = 0; i < n; i++)
h.insertItem(a[i]);
// delete 12 from hash table
h.deleteItem(12);
// display the Hash table
h.displayHash();
return 0;
}