Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Create a class called Song (Song.h and Song.cpp) which is defined by a title, singer and chart position. 2. Create a dynamic array of pointers

Create a class called Song (Song.h and Song.cpp) which is defined by a title, singer and chart position. 2. Create a dynamic array of pointers (called dataArray) to Song objects 3. Read in the song data from a file called SongsData.txt that contains 100 songs which are unsorted 4. Create a song object and save the pointer to this object in the dynamic array 5. Use the selection sort algorithm to sort this dataArray. Count the number of steps taken to sort 6. Print the sorted array 7. Prompt the user for a song title 8. Perform a linear search through the dataArray and count the number of steps taken for this search

Please show pictures displaying correct output and that program runs sucessfully!

Song.cpp

#include "Song.h" //default constructor Song::Song(){ title=""; singer=""; chartPosition=0; } //custom constructor Song::Song(std::string title, std::string singer, int chartPosition){ //TODO } //GIVEN CODE std::string Song::toString(){ return "Title: "+title+ " Singer: "+singer+ " ChartPosition: "+std::to_string(chartPosition); } //GIVEN CODE std::ostream& operator<<(std::ostream & str, Song *s){ str<< s->toString(); return str; } // int Song::getChartPosition(){ return 0;// change this //TODO } //GIVEN CODE //operator < overloading bool Song::operator<(Song *b){ return chartPositiongetChartPosition(); } //return title std::string Song::getTitle(){

//TODO return "";// change this }

main.cpp

#include #include #include "Song.h" #include #include // max size of the dynamic array const int SIZE = 300; //selection sort to sort according to chart position int sortSongs(Song **, int size);

//print the top ten songs in the sorted array void printTopTen(Song **,int size); //print all the songs in the array void print(Song**,int size);

//returns the actual number of songs read // if more songs than size, then they are ignored.

int populateArray(std::string filename, Song**); //search by title int searchASong(Song** dataArray,int size); //get the song by chart position Song getSong(Song** dataArray, int size, int chartPosition);

int main() { // create a dynamic array of pointers to Song objects Song ** dataArray = new Song*[SIZE]; //populate the array by reading data from the file int size=populateArray("SongsData.txt",dataArray); //print the data Array //print(dataArray,size); // sort the song array using selection sort int sortSteps=sortSongs(dataArray,size); //print the number of steps //print the sorted data Array print(dataArray,size); //print the top ten songs printTopTen(dataArray,size); //search for a song by title

int searchSteps=searchASong(dataArray,size); //print the number of steps } // Requires non negative size // Effects Sorts the Songs dataArray //using selection sortSongs //Modifies dataArray int sortSongs(Song ** dataArray, int size){ //GIVEN CODE int steps=0; Song * minValue= new Song(); int minIndex=0; for (int i=0;i

// Requires valid filename to open file // Effects fills the Songs dataArray // //Modifies dataArray int populateArray(std::string filename, Song** dataArray){ //GIVEN CODE int size=0; std::string line; std::string title; std::string singer; int chartPosition;

try{ std::ifstream input(filename); if (input.fail()) throw new std::string(filename + " File Open Error"); while(!input.eof()){ getline(input,line); std::istringstream inpline(line); std::getline(inpline,title,','); std::getline(inpline,singer,','); inpline>>chartPosition; dataArray[size]= new Song(title,singer,chartPosition); size++;

} } catch(std:: string e){ std::cout<0 //E uses the overloaded << operator in Song to print all the Songs //M nothing void print(Song** dataArray,int size){ //TODO } //Requires size >0 //Effects Prints top ten songs by calling print data method // if there are less than 10 songs in array then it prints them all otherwise it prints first 10 songs //Modifies nothing void printTopTen(Song** dataArray,int size){ //TODO } //Requires size >0 //Effects Linear Searches for the song based on title //Prompts user for title //Modifies Nothing int searchASong(Song **dataArray, int size){ int steps=0; std::cout<<"Which title are you searching ?"; std::string title; getline(std::cin, title); //TODO return steps; }

//Requires size >=0 // Effect Searches for song by title using chart position returns index if found otherwise -1 //uses linear search //Modifies nothing

Song getSong(Song** dataArray, int size, int chartPosition){ //GIVEN CODE if (chartPosition

Song.h

#include class Song{ private: std::string title; std::string singer; int chartPosition; public: //default constructor Song(); //custom constructor Song(std::string title,std:: string singer, int chartPosition); // convert object to string std::string toString(); //operator overloading for ostream operator friend std::ostream & operator<<(std::ostream&, Song* s); //operator overloading for less than operator bool operator<(Song *b); //getter for chart position int getChartPosition(); // return title std::string getTitle(); };

Output.txt

(This is what final output should look like)

**************************************** The number of steps for selection sort = 4950 **************************************** Name of each song, the singer, and chart position goes here

EX: Title: rose Singer: taeyong ChartPosition: 1

****************************************

Which title are you searching ?ice cream Song found: Title: ice cream Singer: blackpink ChartPosition: 92 **************************************** The number of steps for linear search = 92 ****************************************

SongsData.txt

december,ariana grande,100 in my head,ariana grande,99 nasa,ariana grande,98 thinking bout you,ariana grande,97 girlfriend,avril lavigne,96 boyfriend,big time rush,95 te deseo lo mejor,bad bunny,94 hostage,billie eilish,93 ice cream,blackpink,92 blood sweat & tears,bts,91 boy in luv,bts,90 dope,bts,79 dimple,bts,77 mic drop,bts,78 second grade,bts,80 war of hormone,bts,76 hold on,chord overstreet,75 we belong,dove cameron,74 boys will be boys,dua lipa,73 man up,hailee steinfeld,70 ko ko bop,exo,71 lotto,exo,72 butterflies,fiji blue,55 he could be the one,hannah montana,54 eight,iu,52 celebrity,iu,50 poker face,lady gaga,51 love me like you,little mix,53 play date,melanie martinez,60 dollhouse,melanie martinez,59 mr potato head,melanie martinez,58 crybaby,melanie martinez,57 soap,melanie martinez,56 die alone,mia sayoko,40 we can't stop,miley cyrus,61 hot n cold,katy perry,62 angel,nct 127,67 lemonande,nct 127,66 another world,nct 127,65 chain,nct 127,69 dreaming,nct 127,68 heartbreaker,nct 127,63 mad city,nct 127,64 once again,nct 127,49 paradise,nct 127,48 punch,nct 127,47 running 2 u,nct 127,46 simon says,nct 127,45 summer127,nct 127,44 switch,nct 127,43 wakey wakey,nct 127,42 welcome to my playground,nct 127,41 beautiful time,nct dream,81 go,nct dream,83 boss,nct u,82 seventh sense,nct u,84 deja vu,olivia rodrigo,86 mona lisa,sabrina carpenter,87 paris,sabrina carpenter,89 prfct,sabrina carpenter,85 sue me,sabrina carpenter,88 long flight,taeyong,2 rose,taeyong,1 twenty two,taylor swift,3 love story,taylor swift,5 we are never getting back together,taylor swift,4 welcome to new york,taylor swift,7 mr brightside,the killers,8 sweater weather,the neighborhood,10 take a hint,victorious,9 shut up and dance,victorious,19 la boyz,victorious,18 ghost,wolf,17 high waisted jeans,wolf,16 hoops,wolf,15 magsafe,wolf,13 styrofoam cup,wolf,14 villain,wolf,11 breathe,lauv,12 hoedown throwdown,hannah montana,20 serendipity,bts,25 fake love,bts,24 the truth untold,bts,29 airplane pt. 2,bts,28 anpanman,bts,27 answer,bts,26 go go,bts,21 im fine,bts,22 magic shop,bts,23 mikrokosmos,bts,35 make it right,bts,30 home,bts,32 jamais vu,bts,33 dionysus,bts,36 one in a million,astro,37 all night,astro,38 sns,astro,31 so what,pink,34 roar,katy perry,39 firework,katy perry,6

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Power Bi And Azure Integrating Cloud Analytics For Scalable Solutions

Authors: Kiet Huynh

1st Edition

B0CMHKB85L, 979-8868959943

Students also viewed these Databases questions