Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Code for TrackSongs.cpp: #include #include #include using namespace std; template class List { private: static const int CHUNK _ SIZE = 1 0 0 ;

Code for TrackSongs.cpp:
#include
#include
#include
using namespace std;
template
class List
{
private:
static const int CHUNK_SIZE=100;
ItemType *list;
int numItems;
int maxItems;
public:
// default constructor and destructor
List(){ numItems =0; maxItems = CHUNK_SIZE;
list = new ItemType[CHUNK_SIZE]; }
~List(){ delete [] list; }
// list member functions
bool isEmpty() const { return numItems==0; }
int getLength() const { return numItems; }
bool insert(int pos, const ItemType& item);
bool remove(int pos);
// clear the list
// clear can simply set numItems to zero. The array list may still contain
// items already inserted into the list, but since numItems is zero, there
// isn't any way to get at them using getEntry() or setEntry()
void clear(){ numItems =0; }
// return entry at postion pos
// throw invalid_argument if pos1 or pos>getLength()
ItemType getEntry(int pos) const;
// set entry at postion pos to item
// throw invalid_argument if pos1 or pos>getLength()
void setEntry(int pos, const ItemType& item);
};
template
bool List::insert(int pos, const ItemType& item)
{
bool canAdd;
canAdd =((pos >0) && (pos = numItems +1) && (numItems maxItems));
if (canAdd)
{
// first, we have to move everything after our insertion point over one
// position to make room for our new item. start at the back of the list.
// don't forget arrays start at postion zero and our list ADT starts at
// position 1.
for(int i=numItems; i>=pos; i--)
list[i]= list[i-1];
// now put our item at position pos-1
list[pos-1]= item;
numItems++;
}
return canAdd;
}
template
ItemType List::getEntry(int pos) const
{
if(pos1|| pos>getLength()){
throw invalid_argument("ERROR: getEntry() using invalid position");
}
return list[pos-1];
}
// TODO: add implementations for setEntry() and remove() functions
// Utility function to input a track number with some input checking
// to make sure it's a number
int getTrack()
{
bool inputCheck;
int trackNumber;
do
{
inputCheck = true;
cout "Please enter the track number you'd like to view: ";
if (!(cin >> trackNumber))
{
cout "Please enter numbers only.
";
cin.clear();
cin.ignore(10000,'
');
inputCheck = false;
}
} while (!inputCheck);
return trackNumber;
}
int main()
{
List songs;
char goAgain ='y';
int trackNumber;
string trackName;
// Insert some songs into our list
songs.insert(1, "One More Saturday Night");
songs.insert(1, "Friday I'm in Love");
songs.insert(3, "Sunday Morning Coming Down");
songs.insert(1, "California Love");
cout "Welcome! There are " songs.getLength()" tracks.
";
while (goAgain!='n')
{
trackNumber = getTrack();
try
{
trackName = songs.getEntry(trackNumber);
}
catch (invalid_argument arg)
{
cout arg.what() endl;
trackName ="No Track";
}
cout "Your track name is " trackName endl;
cout "Go again? (y/n)";
cin >> goAgain;
}
cout "Rock on!
";
return 0;
}
image text in transcribed

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

More Books

Students also viewed these Databases questions

Question

Is SHRD compatible with individual career aspirations

Answered: 1 week ago