• Nov 18, 2022 •AustinLeath
0 likes • 3 views
#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(); } } }
• Aug 5, 2023 •usama
1 like • 6 views
/* Good morning! Here's your coding interview problem for today. This problem was asked by Stripe. Given an array of integers, find the first missing positive integer in linear time and constant space. In other words, find the lowest positive integer that does not exist in the array. The array can contain duplicates and negative numbers as well. For example, the input [3, 4, -1, 1] should give 2. The input [1, 2, 0] should give 3. You can modify the input array in-place. */ #include <iostream> using namespace std; int calcMissing(int* input, int size) { int sum = 0; int n = 1; //add one to account for missing value for(int i = 0; i < size; i++) { if(input[i] > 0) { sum += input[i]; n++; } } //If no numbers higher than 0, answer is 1 if(sum == 0) return 1; return (n*(n+1)/2) - sum; //Formula is expectedSum - actualSum /* expectedSum = n*(n+1)/2, the formula for sum(1, n) */ } int main() { cout << calcMissing(new int[4]{3, 4, -1, 1}, 4) << endl; cout << calcMissing(new int[3]{1, 2, 0}, 3) << endl; //No positive numbers cout << calcMissing(new int[1]{0}, 1) << endl; }
• Aug 31, 2020 •joshwrou
1 like • 3 views
#include <iostream> using namespace std; int main() { cout << "Hello World!\n"; // Prints out "Hello World" return 0; }
• Aug 25, 2023 •LeifMessinger
1 like • 12 views
#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 incremented f.) Print "Hello, world!" then print the pointer address in hexadecimal g.) Both b and e? h.) Both c and e? i.) B, c, and e? */ // The answer is in this base 64 string: // T25seSBjLikKVGhlIGNvbXBpbGVyIGRvZXNuJ3QgYXBwcmVjaWF0ZSB5b3UgbWFraW5nIHRoZSBjaGFyYWN0ZXJzIHRoZSBwb2ludGVyIHJlZmVycyB0byBub24tY29uc3QsIGJ1dCBpdCdzIGZpbmUgd2l0aCB5b3UgY29weWluZyBhIGNvbnN0YW50IHZhbHVlLCBpLmUuIHRoZSBwb2ludGVyLCB0byBhIG5vbi1jb25zdGFudCB2YXJpYWJsZS4KSWYgeW91IHJlcGxhY2UgdGhhdCBsaW5lIHdpdGggY2hhciogY29uc3QgeWVldCA9IGNvbnN0X2Nhc3Q8Y2hhciogY29uc3Q+KGhlbGxvKTsgSXQnbGwgcHJpbnQgIkhlbGxvLCB3b3JsZCEiIHR3aWNlLCB3aGljaCBpcyB2ZXJ5IHN0cmFuZ2UgY29uc2lkZXJpbmcgdGhhdCB5ZWV0IGlzIGEgY29uc3QgcG9pbnRlciwgc28geW91J2QgdGhpbmsgaXQgd291bGQgcHJpbnQgYXMgYSBoZXhhZGVjaW1hbCBiZWNhdXNlIGlmIHlvdSB0cnkgdG8gKCsreWVldCkgd2hpbGUgbG9vcGluZyB0aHJvdWdoIHRoZSBzdHJpbmcsIHlvdSdkIGdldCBhbiBlcnJvciwgYmVjYXVzZSBpdCdzIGNvbnN0IGFuZCBjYW4ndCBiZSBjaGFuZ2VkLgpJbnN0ZWFkIG9mIHVzaW5nIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIG9zdHJlYW06Om9wZXJhdG9yPDwsIHRoZXkgbWFrZSBpdCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHlwZSBjb25zdCBjaGFyKiwgYW5kIEMrKyBoYXMgbm8gcHJvYmxlbXMgcHJvbW90aW5nIGEgdmFyaWFibGUgdG8gY29uc3RhbnQgd2hlbiBpbXBsaWNpdCBjYXN0aW5nLCBhbmQgaXQgaGFzIG5vIHByb2JsZW1zIGltcGxpY2l0IGNhc3RpbmcgdGhlIGNvbnN0IHBvaW50ZXIgdG8gYSBub3JtYWwgcG9pbnRlciBiZWNhdXNlIGl0J3MgbWFraW5nIGEgY29weS4gVGhlIHBvaW50ZXIgZ2V0cyBjb3BpZWQgYmVjYXVzZSB0aGUgcG9pbnRlciBpcyBwYXNzZWQgYnkgdmFsdWUsIG5vdCByZWZlcmVuY2Uu
0 likes • 15 views
#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; }
• Sep 7, 2022 •LeifMessinger
0 likes • 0 views
#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; }