Wsita Stane Universi . The name of your compled binary shall be exam2 You will b
ID: 3917872 • Letter: W
Question
Wsita Stane Universi . The name of your compled binary shall be exam2 You will be submitting a minimum of 13 files The fles required include 2 files for a base Pet class - 6 files (2 each) for three pet classes derived from Pet 2 files for a Book dlass -1 file fer a List class -1 file for your main function 1 file for your makefile 10 of the files are "trivial" in that they will be classes with just enough functionality to work within a The grading focus on this assignment is mosty with the List class, although a sizable portion also go towards properly deriving from Pet Pet class requirements -The class shall be abstract -The class shall contain a pure virtual function called speak -Any data common to all pets shall be placed in this class - All pets s shall have a name Derived from Pet requirements: - Derive 3 classes from Pet -You may choose what types of Pets to derive - Examples include: Dog. Cat, Goldfish, Rock, lguana, Tarantula, SugarGlider, etc Book class requirements: A book must contain the following data: author year List class requirements: This is a template class - You may hold the list in whatever structure you want (with one exception) Linked List, dynamic array, vectors are all acceptable You may NOT use a statically alkoated array -This is sorted list Pets are sorted by their name Books are sorted by their author (no need to sort by last name first, just the value of author is sufficient emain.cpp requirements: Iwill not provide test fles Inside your main function, you shall declare two lists -One to hold your pets One to hold your books Add 5 items to each list .Print each list to their own file -The Pet fle shall be called petstxt - The Book file shal be called library.titExplanation / Answer
Answer:
The following code as shown below with following files.
Code:
Main.cpp:
template<class T>
class LinkedList{
private:
Node<T> *HEAD;
Node<T> *TAIL;
int Cap;
public:
LinkedList<T>(){
HEAD = NULL;
TAIL = NULL;
Cap = 0;
}
LinkedList(T arr[],int items):LinkedList<T>(){
for(int i = 0;i<items;i++){
inserted(arr[i]);
}
cout<<Cap;
}
~LinkedList<T>(){
madeEmpty();
}
void inserted(const T &items){
if(HEAD == NULL){
HEAD = new Node<T>();
HEAD->NEXT = NULL;
HEAD->data = items;
TAIL = HEAD;
Cap = 1;
return;
}
Node<T> *cur = HEAD;
Node<T> *prev = NULL;
Node<T> *newNode = new Node<T>();
newNode->NEXT = NULL;
newNode->data = items;
while(cur != NULL){
if(cur->data >= items){
if(prev == NULL){
newNode->NEXT = HEAD;
HEAD = newNode;
Cap++;
return;
}
prev->NEXT = newNode;
newNode->NEXT = cur;
Cap++;
return;
}else{
prev = cur;
cur = cur->NEXT;
}
}
prev->NEXT = newNode;
TAIL = newNode;
Cap++;
}
T* getFront(){
if(HEAD == NULL){
return NULL;
}
else{
return &HEAD->data;
}
}
T* getBack(){
if(HEAD == NULL){
return NULL;
}
else{
return &TAIL->data;
}
}
bool contains(const T &items){
if(HEAD == NULL){
return false;
}
else{
Node<T> *TEMP = HEAD;
while(TEMP != NULL){
if(TEMP->data == items){
return true;
}
TEMP = TEMP->NEXT;
}
return false;
}
}
void removedNode(int i){
if(i >= Cap){
throw new OutOfBoundsError();
}
else{
Node<T> *TEMP = HEAD;
if(i == 0){
if(HEAD == TAIL){
HEAD = TAIL = NULL;
delete TEMP;
}
else{
HEAD = HEAD->NEXT;
delete TEMP;
}
}
else{
for(int j = 0;j<i;j++){
TEMP = TEMP->NEXT;
}
if(TAIL == TEMP->NEXT){
TAIL = TEMP;
delete TEMP->NEXT;
}
else{
Node<T> *tmp = TEMP->NEXT;
TEMP->NEXT = tmp->NEXT;
delete tmp;
}
}
}
Cap--;
}
void madeEmpty(){
Node<T> *NEXT;
while(HEAD != NULL){
NEXT = HEAD->NEXT;
delete HEAD;
HEAD = NEXT;
}
HEAD = NULL;
Cap = 0;
}
int getsize(){
return Cap;
}
void DisplayListed(ostream &ous){
if(HEAD != NULL){
Node<T> *TEMP = head;
for(int i = 0;i<size;i++){
if(TEMP == NULL){
break;
}
ous<<"["<<TEMP->data<<"]";
if(i != Cap-1){
ous<<" -> ";
}
TEMP = TEMP->NEXT;
}
}
else{
ous<<" List Is Empty";
}
}
};
Book.h:
#ifndef BOOK_H
#define BOOK_H
#include<iostream>
using namespace std;
// implement class
class Book{
// private variable
private:
string Author;
string Titles;
int years;
// public variables
public:
// methods
Book();
Book(string,string,int);
void setTitle(string);
string getTitle()const;
void setAuthor(string);
string getAuthor()const;
void setYear(int);
int getYear()const;
Book& operator=(const Book& b);
bool operator>=(const Book &p)const;
friend ostream& operator<<(ostream& ous,const Book &b);
};
#endif
Book.cpp:
Book::Book(){
Authors = "";
Titles = "";
years = 0;
}
Book::Book(string auth,string titl,int years){
setAuthors(auth);
setTitle(titl);
setYear(years);
}
void Book::setAuthors(string auth){
Authors = auth;
}
void Book::setTitle(string tit){
Titles = tit;
}
void Book::setYear(int y){
years = y;
}
string Book::getAuthors()const{
return Authors;
}
string Book::getTitle()const{
return Titles;
}
int Book::getYear()const{
return years;
}
bool Book::operator>=(const Book &b)const{
return Authors >= b.Authors;
}
Book& Book::operator=(const Book& b){
if(this == &b){
return *this;
}
Authors = b.getAuthor();
Titles = b.getTitle();
years = b.getYear();
return *this;
}
ostream& operator<<(ostream& ous,const Book &b){
ous<<b.getAuthor()<<" "<<b.getTitle()<<" "<<b.getYear();
return ous;
}
Cat.h:
#ifndef CAT_H
#define CAT_H
// defintion class
#include "Pet.h"
class Cat:public Pet{
// declare method
public:
Cat();
Cat(string);
void taught()const;
};
#endif
Cat.cpp:
Cat::Cat():Pet(){
}
Cat::Cat(string n):Pet(n){
}
void Cat::taught()const{
cout << "Mewwo Mewwo Mewwo Mewww....";
}
Dog.h:
#ifndef DOG_H
#define DOG_H
#include "Pet.h"
class Dog:public Pet{
// define a variable
public:
// declare call
Dog();
Dog(string);
void Bark()const;
};
#endif
Dog.cpp:
Dog::Dog():Pet(){
}
Dog::Dog(string n):Pet(n){
}
void Dog::Bark()const{
cout << "Baww Baww Baww Baww ....";
}
Goldfish.h:
#ifndef GOLDFISH_H
#define GOLDFISH_H
#include "Pet.h"
// implement class
class GoldFish:public Pet{
// declare method
public:
GoldFish();
GoldFish(string);
void Swallo()const;
};
#endif
Goldfish.cpp:
GoldFish::GoldFish():Pet(){
}
GoldFish::GoldFish(string n):Pet(n){
}
void GoldFish::Swallo()const{
cout << "Humsss Humsss Humsss Humsss....";
}
LinkList.h:
LinkList.h : ----------
#include<iostream>
using namespace std;
template<class T>
struct Node{
T data;
Node *next;
};
// implemnet a class for array class
class OutOfBoundsError{
public:
OutOfBoundsError(){
cout<<" Index Out Of the Bound ";
}
};
Pet.h:
#ifndef PET_H
#define PET_H
#include<iostream>
using namespace std;
// implement a class
class Pet{
// define a variable
private:
string name;
public:
Pet();
Pet(string);
// method function
virtual void speak()const=0;
void setName(string);
string getName()const;
Pet& operator=(const Pet &p);
bool operator>=(const Pet &p)const;
friend ostream& operator<<(ostream& ous,const Pet &p);
};
#endif
Pet.cpp:
Pet::Pet(){
Names = "";
}
Pet::Pet(string n){
setName(n);
}
Pet& Pet::operator=(const Pet& p){
if(this == &b){
return *this;
}
Names = p.getName();
return *this;
}
void Pet::setName(string n){
Names = n;
}
string Pet::getName()const{
return Names;
}
bool Pet::operator>=(const Pet &p)const{
return Names >= p.Names;
}
ostream& operator<<(ostream& ous,const Pet& p){
ous<<Names<<" ";
return ous;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.