Loading...
More C++ Posts
#include <string>#include <iostream>#include "PlaylistNode.h"using namespace std;PlaylistNode::PlaylistNode() {uniqueID = "none";songName = "none";artistName = "none";songLength = 0;nextNodePtr = 0;}PlaylistNode::PlaylistNode(string uniqueID_, string songName_, string artistName_, int songLength_) {uniqueID = uniqueID_;songName = songName_;artistName = artistName_;songLength = songLength_;nextNodePtr = 0;}void PlaylistNode::InsertAfter(PlaylistNode* ptr) {this->SetNext(ptr->GetNext());ptr->SetNext(this);}void PlaylistNode::SetNext(PlaylistNode* ptr) {nextNodePtr = ptr;}string PlaylistNode::GetID() {return uniqueID;}string PlaylistNode::GetSongName() {return songName;}string PlaylistNode::GetArtistName() {return artistName;}int PlaylistNode::GetSongLength() {return songLength;}PlaylistNode* PlaylistNode::GetNext() {return nextNodePtr;}void PlaylistNode::PrintPlaylistNode() {cout << "Unique ID: " << uniqueID << endl;cout << "Song Name: " << songName << endl;cout << "Artist Name: " << artistName << endl;cout << "Song Length (in seconds): " << songLength << endl;}Playlist::Playlist() {head = tail = 0;}void Playlist::AddSong(string id, string songname, string artistname, int length) {PlaylistNode* n = new PlaylistNode(id, songname, artistname, length);if (head == 0) {head = tail = n;}else {n->InsertAfter(tail);tail = n;}}bool Playlist::RemoveSong(string id) {if (head == NULL) {cout << "Playlist is empty" << endl;return false;}PlaylistNode* curr = head;PlaylistNode* prev = NULL;while (curr != NULL) {if (curr->GetID() == id) {break;}prev = curr;curr = curr->GetNext();}if (curr == NULL) {cout << "\"" << curr->GetSongName() << "\" is not found" << endl;return false;}else {if (prev != NULL) {prev ->SetNext(curr->GetNext());}else {head = curr->GetNext();}if (tail == curr) {tail = prev;}cout << "\"" << curr->GetSongName() << "\" removed." << endl;delete curr;return true;}}bool Playlist::ChangePosition(int oldPos, int newPos) {if (head == NULL) {cout << "Playlist is empty" << endl;return false;}PlaylistNode* prev = NULL;PlaylistNode* curr = head;int pos;if (head == NULL || head == tail) {return false;}for (pos = 1; curr != NULL && pos < oldPos; pos++) {prev = curr;curr = curr->GetNext();}if (curr != NULL) {string currentSong = curr->GetSongName();if (prev == NULL) {head = curr->GetNext();}else {prev->SetNext(curr->GetNext());}if (curr == tail) {tail = prev;}PlaylistNode* curr1 = curr;prev = NULL;curr = head;for (pos = 1; curr != NULL && pos < newPos; pos++) {prev = curr;curr = curr->GetNext();}if (prev == NULL) {curr1->SetNext(head);head = curr1;}else {curr1->InsertAfter(prev);}if (curr == NULL) {tail = curr1;}cout << "\"" << currentSong << "\" moved to position " << newPos << endl;return true;}else {cout << "Song's current position is invalid" << endl;return false;}}void Playlist::SongsByArtist(string artist) {if (head == NULL) {cout << "Playlist is empty" << endl;}else {PlaylistNode* curr = head;int i = 1;while (curr != NULL) {if (curr->GetArtistName() == artist) {cout << endl << i << "." << endl;curr->PrintPlaylistNode();}curr = curr->GetNext();i++;}}}int Playlist::TotalTime() {int total = 0;PlaylistNode* curr = head;while (curr != NULL) {total += curr->GetSongLength();curr = curr->GetNext();}return total;}void Playlist::PrintList() {if (head == NULL) {cout << "Playlist is empty" << endl;}else {PlaylistNode* curr = head;int i = 1;while (curr != NULL) {cout << endl << i++ << "." << endl;curr->PrintPlaylistNode();curr = curr->GetNext();}}}
//===============Header File==================#include <iostream>#include <sstream> //stringbuf#include <utility> //exchange//Couple rules://Characters given through the getter functions have to be removed from the buffer.//This is so that bufferEmpty() == buffer.in_avail() > 0 basically always.//skipWhitespace doesn't remove the text from the buffer, but it does return the number of characters.//nextWord will trim whitespace before the word//nextInt will trim non-numbers before the number//hasNextInt and hasNextWord will trim the whitespace. If you think you need it, you should get nextWhitespace before doing any of those.//Whitespace after a word or an int is left on the buffer.//nextWhitespace will (get and) remove whitespace until the end of the line, including the newline character, but stops before the next line.//nextWhitespace won't read the next line when called before the end of the line, and it won't prompt the user for the next line if interactive.//If nextWhitespace is called after reading the end of the line, then it will read a new line into the buffer, which will prompt the user.//It acts like nextLine, but if there's something non-whitespace on the current line it stops there.class Scanner {public:std::stringbuf buffer;std::istream& input;Scanner(std::istream& in = std::cin) : buffer(), input(in) {}//Buffer debuggingbool fillBuffer();bool bufferEmpty();void printBufferEmpty();std::string getBuffer();size_t bufferLength();void printBufferStats();//Intbool hasNextInt();int nextInt();//Wordbool hasNextWord();std::string nextWord();//Linebool hasNextLine();//Whitespacesize_t skipWhitespace(); //Prob should be private, but I don't believe in that private shit.bool hasNextWhitespace();std::string nextWhitespace();std::string nextWhitespaceAll();std::string nextLine();};//===============Source File==================bool Scanner::fillBuffer() { //Returns if it had to get the next line from the input.const bool badInput = input.eof() || input.bad();const bool shouldFillBuffer = bufferEmpty() && !badInput;if (shouldFillBuffer) {std::string line;if (std::getline(input, line)) {buffer.str(buffer.str() + line + "\n");}}return shouldFillBuffer;}bool Scanner::bufferEmpty(){return buffer.str() == "";}void Scanner::printBufferEmpty(){std::cout << "The buffer is " << (bufferEmpty()? "" : "not") << " empty." << std::endl;}std::string Scanner::getBuffer(){return buffer.str();}size_t Scanner::bufferLength(){return buffer.str().length();}void Scanner::printBufferStats(){if(bufferEmpty()){std::cout << "The buffer is \"\"" << std::endl;return;}std::cout << "The length of the buffer is " << bufferLength() << std::endl;if(buffer.sgetc() == '\r'){std::cout << "The buffer is \\r\\n" << std::endl;}else if(buffer.sgetc() == '\n'){std::cout << "The buffer is \\n" << std::endl;}}bool Scanner::hasNextInt() {return hasNextWord() && (std::isdigit(buffer.sgetc()) || buffer.sgetc() == '-');}int Scanner::nextInt() {if (!hasNextInt()) { //Will fill the buffer if not filled. Will also trim whitespace.return 0;}std::string num;size_t charactersRead = 0;while (buffer.in_avail() > 0 && (std::isdigit(buffer.sgetc()) || buffer.sgetc() == '-')) {num += buffer.sbumpc();++charactersRead;}buffer.str(buffer.str().erase(0, charactersRead));return std::stoi(num);}bool Scanner::hasNextWord() {nextWhitespaceAll();return buffer.in_avail() > 0;}std::string Scanner::nextWord() {if (!hasNextWord()) { //Will fill the buffer if not filled. Will also trim whitespace.return "";}std::string word;size_t charactersRead = 0;while (buffer.in_avail() > 0 && !std::isspace(buffer.sgetc())) {word += buffer.sbumpc();++charactersRead;}buffer.str(buffer.str().erase(0, charactersRead));return word;}bool Scanner::hasNextLine() {return (!bufferEmpty()) || fillBuffer();}size_t Scanner::skipWhitespace() { //Returns characters readsize_t charactersRead = 0;while (buffer.in_avail() > 0 && std::isspace(buffer.sgetc())) {buffer.sbumpc();++charactersRead;}return charactersRead;}bool Scanner::hasNextWhitespace(){fillBuffer();return buffer.in_avail() > 0 && std::isspace(buffer.sgetc());}std::string Scanner::nextWhitespace() {if (!hasNextWhitespace()) { //Will fill the buffer if not filledreturn "";}const size_t charactersRead = skipWhitespace();std::string whitespace = buffer.str().substr(charactersRead);buffer.str(buffer.str().erase(0, charactersRead));return whitespace;}std::string Scanner::nextWhitespaceAll(){std::string whitespace;while(hasNextWhitespace()){std::string gottenWhiteSpace = nextWhitespace();whitespace += gottenWhiteSpace;}return whitespace;}std::string Scanner::nextLine(){if (!hasNextLine()) {return "";}fillBuffer();//Swap out the old buffer with an empty buffer, and get the old buffer as a variable.std::string line = std::exchange(buffer, std::stringbuf()).str();//Remove the newline.if(line[line.length() - 1] == '\n' || line[line.length() - 1] == '\r' ) line.pop_back();if(line[line.length() - 1] == '\r' || line[line.length() - 1] == '\n' ) line.pop_back();return line;}//=================Word and Int test=================while(bruh.hasNextInt() || bruh.hasNextWord()){std::cout << "started loop" << std::endl;if(bruh.hasNextInt()){std::cout << "Int: " << bruh.nextInt() << " " << std::endl;}else{std::cout << "Word: " << bruh.nextWord() << " " << std::endl;}bruh.nextWhitespace();}//===================Line test======================for(int count = 1; bruh.hasNextLine(); ++count){std::string line = bruh.nextLine();std::cout << "Line " << count << ": " << line << std::endl;}
#include <iostream>using namespace std;int main() {cout << "Hello World!\n";// Prints out "Hello World"return 0;}
#include <iostream>int main(){const char* const hello = "Hello, world!";const char* bruh = hello;char* const yeet = hello;std::cout << bruh << std::endl;std::cout << yeet << std::endl;return 0;}/*Place your bets!Will the program:a.) Print "Hello, world!" twice?b.) Compile error on line 5 (bruh initialize line) because the pointer gets implicit cast to non-const?c.) Compile error on line 7 (yeet initialize line) because the char gets implicit cast to non-const?d.) Both b and c?e.) Compile error line 11 (print yeet) because the pointer is constant and can't be incrementedf.) Print "Hello, world!" then print the pointer address in hexadecimalg.) Both b and e?h.) Both c and e?i.) B, c, and e?*/// The answer is in this base 64 string:// T25seSBjLikKVGhlIGNvbXBpbGVyIGRvZXNuJ3QgYXBwcmVjaWF0ZSB5b3UgbWFraW5nIHRoZSBjaGFyYWN0ZXJzIHRoZSBwb2ludGVyIHJlZmVycyB0byBub24tY29uc3QsIGJ1dCBpdCdzIGZpbmUgd2l0aCB5b3UgY29weWluZyBhIGNvbnN0YW50IHZhbHVlLCBpLmUuIHRoZSBwb2ludGVyLCB0byBhIG5vbi1jb25zdGFudCB2YXJpYWJsZS4KSWYgeW91IHJlcGxhY2UgdGhhdCBsaW5lIHdpdGggY2hhciogY29uc3QgeWVldCA9IGNvbnN0X2Nhc3Q8Y2hhciogY29uc3Q+KGhlbGxvKTsgSXQnbGwgcHJpbnQgIkhlbGxvLCB3b3JsZCEiIHR3aWNlLCB3aGljaCBpcyB2ZXJ5IHN0cmFuZ2UgY29uc2lkZXJpbmcgdGhhdCB5ZWV0IGlzIGEgY29uc3QgcG9pbnRlciwgc28geW91J2QgdGhpbmsgaXQgd291bGQgcHJpbnQgYXMgYSBoZXhhZGVjaW1hbCBiZWNhdXNlIGlmIHlvdSB0cnkgdG8gKCsreWVldCkgd2hpbGUgbG9vcGluZyB0aHJvdWdoIHRoZSBzdHJpbmcsIHlvdSdkIGdldCBhbiBlcnJvciwgYmVjYXVzZSBpdCdzIGNvbnN0IGFuZCBjYW4ndCBiZSBjaGFuZ2VkLgpJbnN0ZWFkIG9mIHVzaW5nIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIG9zdHJlYW06Om9wZXJhdG9yPDwsIHRoZXkgbWFrZSBpdCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHlwZSBjb25zdCBjaGFyKiwgYW5kIEMrKyBoYXMgbm8gcHJvYmxlbXMgcHJvbW90aW5nIGEgdmFyaWFibGUgdG8gY29uc3RhbnQgd2hlbiBpbXBsaWNpdCBjYXN0aW5nLCBhbmQgaXQgaGFzIG5vIHByb2JsZW1zIGltcGxpY2l0IGNhc3RpbmcgdGhlIGNvbnN0IHBvaW50ZXIgdG8gYSBub3JtYWwgcG9pbnRlciBiZWNhdXNlIGl0J3MgbWFraW5nIGEgY29weS4gVGhlIHBvaW50ZXIgZ2V0cyBjb3BpZWQgYmVjYXVzZSB0aGUgcG9pbnRlciBpcyBwYXNzZWQgYnkgdmFsdWUsIG5vdCByZWZlcmVuY2Uu
#include <iostream>#include <cmath>#include <string.h>using namespace std;int main() {string tickerName;int numOfContracts;float currentOptionValue;cout << "Enter a stock ticker: ";getline(cin, tickerName);cout << "Enter the current number of " << tickerName << " contracts you are holding: ";cin >> numOfContracts;cout << "Enter the current price of the option: ";cin >> currentOptionValue;cout << "The value of your " << tickerName << " options are: $" << (currentOptionValue * 100.00) * (numOfContracts);cout << endl;return 0;}
#include <iostream>using namespace std;/* Function: get_coeffParameters: double& coeff, int pos passed from bb_4acReturn: 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 coeffcoeff = 5; //input coeff}/* Function: bb_4acParameters: 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 equationget_coeff(a, 1); // call function 1st timeget_coeff(b, 2); // call function 2nd timeget_coeff(c, 3); // call function 3rd timereturn 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 functioncout << "The discriminant for given values is: " << determinate << endl; //output the determinate!}