Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Use C++ template mechanism and define a generic SortedList ADT. Implement the SortedList ADT using a dynamically allocated array. Use the Student.cpp, SortedList.cpp, SortedList.h to

Use C++ template mechanism and define a generic SortedList ADT. Implement the SortedList ADT using a dynamically allocated array.

Use the Student.cpp, SortedList.cpp, SortedList.h to implement a tester.cpp (included below) and text files

you are allow to implement Student.cpp SortedList.cpp SortedList.h

Implement tester.cpp. This program should test the SortedList ADT. The program will continue reading commands and data from the input file inFile until the command Quit is read. Commands are: (isEmpty, isFull, makeEmpty, getLength, get, insertItem, deleteItem, merge and printList) The program should write output to an output file outFile.txt.

Your test driver should define these lists:

SortedList integerList(5); // list of integers, default size.

SortedList charList; // a list of characters of size 20.

SortedList studentList(10); // Students list of size 10.

Your test driver should read list data type from the use in order to be able to test your implementation for the three types: int, char and Student (see the code below). make sure you are using the same commands and be aware of case sensitivity e.g. isEmpty not IsEmpty which will cause your program to fail the test.

Textfiles:

Test your program with 3 text file intcommands.txt, chcommands.txt and studcommands.txt each contains testing commands for specific data type your test driver should carefully associate the inFile with the corresponding commands file. Our command file for integer lists is called int intcommands.txt. Our commands file to test a list of characters is called chcommands.txt and our text file to test a list of student objects is called studcommands.txt. Make sure that the program will give the correct results and will not stop due to any run-time error

SortedList.h

#include #include #include template class SortedList { public: SortedList(); bool isEmpty() const; bool isFull() const; int getLength() const; void insertItem(ItemType newItem); void deleteItem(ItemType item); ItemType get(int index); void makeEmpty(); void printList(); ~SortedList(); private: int length; int MAX_ITEMS; ItemType *info; int findIndex(ItemType item); };

SortedList.cpp

#include "SortedList.h" #include #include

template SortedList::SortedList() { MAX_ITEMS = 50; info = new ItemType[MAX_ITEMS]; length = 0; } template bool SortedList::isEmpty() const { return (length == 0); } template bool SortedList::isFull() const { return (length == MAX_ITEMS); } template int SortedList::getLength() const { return length; } template void SortedList::insertItem (ItemType newItem) { int location = 0; while(location < length) { if(newItem break; else location++; } for (int index = length; index > location; index --) info[index] = info [index - 1]; info[location] = newItem; length++; }

template void SortedList::deleteItem (ItemType item) { int location = 0; while (item != info[location]) location++; for (int index = location + 1; index info [index-1] = info[index]; length--; }

template void SortedList::makeEmpty () { delete []info; //deallocate previously allocated array //create a new empty list info = new ItemType[MAX_ITEMS]; length = 0; } template ItemType SortedList::get(int index) { if(index <0 || index>= length) throw std::out_of_range("Index out of range"); //throw out of range exception

return info[index]; }

template void SortedList::printList() { for(int i = 0; i < length; i++) std::cout << info[i] << std::endl; }

template SortedList::~SortedList() { delete []info; //deallocate the memory }

Student.cpp

#include "SortedList.cpp" using namespace std; class Student { private: int id; string name; public: Student() { id = 0; name = ""; } Student(int id_in, string name_in) { id = id_in; name = name_in; }

void setId(int id_in) { id = id_in; }

void setName(string name_in) { name = name_in; }

int getId() const { return id; }

string getName() const { return name; }

bool operator == (const Student &other) { return id == other.id; } bool operator < (const Student &other) { return id < other.id; }

bool operator > (const Student &other) { return id > other.id; }

friend ostream & operator << (ostream &out, const Student &s) { out << s.getId() << "\t" << s.getName(); return out; } };

--------------------------

tester.cpp

#include #include #include

#include #include #include "SortedList.h" 
using namespace std; 
void testIntegersList(); void testCharactersList(); void testStudentsList(); int main() 
{ int number; string command; 
 int datatype; 
// Prompt user to enter type of elements 

Cout<< Enter Elements Type 1 for integer 2 for character 3 for Student ; cin>> datatype; switch (datatype) { case 1: testIntegersList();

 break; case 2: testCharactersList(); 
 break; case 3: testStudentsList(); 

break;

} void testIntegersList() { ifstream inFile; ofstream outFile; inFile.open(intcommands.txt); outFile.open(outFile.txt); inFile>> command; // read commands from a text file SortedList list(30); while (command != Quit) { if (command== isEmpty())

 if( list.isEmpty()) outFile << list is empty; 
 else outFile << list is not empty; 
 else if (command == inserItem) { 
 inFile>> number; 
 list.inserItem(number); } 
.......... inFile>> command;} // while } // testIntegersList 
void testStudentsList() 

{ ifstream inFile; ofstream outFile; inFile.open(studcommands.txt); outFile.open(outFile.txt); inFile>> command; // read commands from a text file

SortedList list; Student StudentObj; while (command != Quit) { if (command== isEmpty()) 
 if( list.isEmpty()) outFile << list is empty; 
 else outFile << list is not empty; 
 else if (command ==  inserItem) { 
 inFile>> ID>>name; StudentObj.setID(ID) StudentObj.setName(name) list.inserItem(StudentObj); 

} ....

} // testStudentList 
void testcharactersList() { .......... } // testCharactersList 

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

DATABASE Administrator Make A Difference

Authors: Mohciine Elmourabit

1st Edition

B0CGM7XG75, 978-1722657802

More Books

Students also viewed these Databases questions

Question

=+ a. a family deciding whether to buy a new car

Answered: 1 week ago

Question

=+10. How are inflation and unemployment related in the short run?

Answered: 1 week ago