Could someone please tell me what is wrong with my code.
Code:
// poddriver.cpp
//Adapted from Roger Priebe
//CS2308 11/17/08
#include <stdlib.h>
#include <iostream>
#include "bobcatPod.h"
using namespace std;
int main()
{
Song s1("Frank Sinatra", "My way", 14);
Song s2("Beatles", "Act Naturally", 5);
Song s3;
BobCatPod p(256);
BobCatPod q(512);
BobCatPod r(25);
cout << "pod p" << endl << p << endl;
cout << "pod q, size 512 exceeds max, should be reset to 256 " << endl
<< q << endl;
cout << "pod r, size should be 25 " << endl << r << endl;
cout << "Song 1" << s1 << endl;
cout << "Song 2" << s2 << endl;
cout << "Song 3" << s3 << endl;
s3.setArtist("Buck Owens");
s3.setTitle("Act Naturally");
s3.setSize(20);
cout << "Song 3 updated " << s3 << endl;
cout << "Artist 1 (Frank Sinatra) " << s1.getArtist() << endl;
cout << "Title 2 (Act Naturally) " << s2.getTitle() << endl;
// s1.setSize(7);
// cout << "Size 1 (7) " << s1.getSize() << endl;
//test relational operators
if (s1 < s3 ) cout << endl << "s1 < s3" << endl;
else cout << endl << "s1 >= s3" << endl;
if (s1 == s2) cout << endl << "s1 == s2" << endl;
else cout << endl << "s1 != s2" << endl;
// test addnode
cout << "add song 1, size 14 " << r.addSong(s1)
<< " memory left = " << r.getRemainingMemory() <<endl;
cout << "add song 2, size 5 " << r.addSong(s2)
<< " memory left = " << r.getRemainingMemory() << endl;
cout << "add song 3, size 20 should fail " << r.addSong(s3)
<< " memory left = " << r.getRemainingMemory() << endl;
s3.setSize(2);
cout << "Size 3 (2) " << s3.getSize() << endl;
cout << "add song 3, size 2 should succeed " << r.addSong(s3)
<< " memory left = " << r.getRemainingMemory() << endl;
// test output
cout << r << endl;
//test delete
r.removeSong(s1);
cout << r << endl;
r.removeSong(s3);
cout << r << endl;
cout << "Total Memory"<< r.getTotalMemory() << endl;
return 0;
}
Code:
//song.h
#ifndef SONG_H
#define SONGT_H
#include <stdlib.h>
#include <iostream>
#include <ostream>
#include <string>
using namespace std;
class Song
{
public:
Song::Song ();
Song::Song(string , string , int ); // constructor
void setSize(int s);
double getSize(); // access or
void setTitle (string t);
string getTitle();
void setArtist (string a);
string getArtist();
void addSong (int);
friend ostream& operator<<(ostream & os, Song & s);
private:
string title; //dynamic allocation
string artist;
int size;
};
#endif
Code:
// file song.cpp
#include "song.h"
#include "bobcatPod.h"
ostream & operator << ( ostream & os, Song & s)
{
os << s.getTitle();
os << s.getArtist();
return os;
}
//constructor
Song::Song ()
{
title=" ";
artist=" ";
size = 0;
}
Song::Song(string a, string t, int s) // constructor
{
size = s;
title = t;
artist = a ;
}
//accessor for name
string Song :: getTitle()
{
return title;
}
//mutator
void Song :: setTitle (string t)
{
title = t;
}
string Song :: getArtist()
{
return artist;
}
//mutator
void Song :: setArtist (string a)
{
artist = a;
}
void Song::setSize(int s)
{
size = s;
}
double Song::getSize()
{
return size;
}
Code:
#define BOBCATPOD_H
class bobcatPod
{
private:
//Declare a structure for the list
struct SongNode
{
Song s; //value in this node
SongNode *next; //To point to the next node
};
SongNode *head;
public:
//Constructor
bobcatPod()
{head = NULL;}
//Destructor
~bobcatPod();
//Linked list operations
void appendNode (Song s);
int addSong (Song s);
int removeSong (Song s);
void showSongList ();
int getTotalMemory();
int getRemainingMemory();
};
#endif
Code:
#include "song.h"
#include "bobcatPod.h"
void bobcatPod::appendNode (Song num)
{
SongNode *newNode; //to point to a new node
SongNode *nodePtr; //to move through the list
//allocate a new node and stor num there.
newNode = new SongNode;
newNode->s = num;
newNode->next = NULL;
//if there are no nodes in the list
//make newNode the first node
if (!head)
head = newNode;
else //otherwise, insert newNOde at end
{
//initialize nodePtr to head of list
nodePtr = head;
//find the last node in the list
while (nodePtr->next)
nodePtr = nodePtr->next;
//insert newNode as the last node.
nodePtr->next = newNode;
}
}
int bobcatPod::addSong(Song s)
{
Song *newSong; //a new node
Song *nodePrt; //to traverse the list
Song *previousSong = NULL; //The previous node
// Allocate a new node and stor num there.
newSong = new Song;
newSong->next = NULL;
//If ther are no nodes in the list
//make newSong the first node
if (!head)
{
head = newSong;
newSong -> next = NULL;
}
else //Otherwise, insert newSong
{
//Position nodePtr at the head of list.
nodePtr = head;
//Initialize prefiousSong to NULL.
previousSong = NULL
//skip all nodes whose value is less than num.
while (nodePtr != NULL && nodePtr ->value <num)
{
previousSong = nodePtr;
nodePtr = nodePtr->next;
}
//If the new Song is to be the 1s in the list,
//insert it before all other nodes.
if (previousSong ==NULL)
{
head = newSong;
newSong ->next = nodePtr;
}
else //Otherwise insert after the previous node.
{
previousSong->next = newSong;
newSong-> next = nodePrt;
}
}
}
The driver and song files work, but there is something wrong with bobpod files.