Question
# Write a class called Song in a file called Song.h with three fields: Title (string) Singer (string) Chart Position (int) # Place these method
# Write a class called Song in a file called Song.h with three fields: Title (string) Singer (string) Chart Position (int) # Place these method headers in the Song.h file 1. Getter and setter for each field 2. Other methods 1. Song(); // default constructor 2. Song(std::string title,std:: string singer, int chartPosition); // custom constructor 3. std::string toString(); // returns object as a string 4. bool operator<(Song other) // overloads the < operator -returns true if the chart position of this song is less others 5. friend std::ostream & operator<<(std::ostream&, Song* s); // overloads the << operator # Write the implementation of these methods in a file called Song.cpp # Write a driver called SongMain.cpp that does the following a. Creates a dynamic array that reads in data from SongData.txt and b. Populates the array by constructing song objects from this data c. Uses the non-recursive selection sort method to sort the array according to chart position (uses the overloaded < operator on Song objects) d. Prints the top ten songs in the chart (uses the overloaded << operator) e. Searches for any song by title and returns chart position asks user for song title, does linear search returns position or -1 Todo List: Use the templates given to you. You are given starter code for Song.h, Song.cpp and SongMain.cpp Code marked GIVEN CODE is given to you for free Comments marked //TODO indicated you need to fill in code. These templates are a guide and you may tweak them if needed Run and test the project for edge cases, average and load cases Run the program with the data file SongsData.txt. This file contains 100 song entries. Save the output Run the program one more time with the data file SongsDataDouble.txt. This has an additional 100 song entries. Save the output |
#include
//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< //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
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started