Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

In C++, need LispArray.cpp to be modified. /////////////ListArray.cpp///////// #include ListArray.h template List ::List ( int maxNumber ) { } template List ::List ( const List&

In C++, need LispArray.cpp to be modified.image text in transcribed

/////////////ListArray.cpp/////////

#include "ListArray.h"

template

List::List ( int maxNumber )

{

}

template

List::List ( const List& source )

{

}

template

List& List::operator= ( const List& source )

{

return *this;

}

template

List::~List ()

{

}

template

void List::insert ( const DataType& newDataItem )

throw ( logic_error )

{

}

template

void List::remove () throw ( logic_error )

{

}

template

void List::replace ( const DataType& newDataItem )

throw ( logic_error )

{

}

template

void List::clear ()

{

}

template

bool List::isEmpty () const

{

return false;

}

template

bool List::isFull () const

{

return false;

}

//*********************************************************************//

// //

// Part 2 //

// //

//*********************************************************************//

template

void List::gotoBeginning ()

throw ( logic_error )

{

}

template

void List::gotoEnd ()

throw ( logic_error )

{

}

template

bool List::gotoNext ()

throw ( logic_error )

{

return false;

}

template

bool List::gotoPrior ()

throw ( logic_error )

{

return false;

}

template

DataType List::getCursor () const

throw ( logic_error )

{

DataType t;

return t;

}

template

void List::moveToNth ( int n )

throw ( logic_error )

{

}

template

bool List::find ( const DataType& searchDataItem )

throw ( logic_error )

{

return false;

}

template

void List::showStructure() const

// outputs the data items in a list. if the list is empty, outputs

// "empty list". this operation is intended for testing/debugging

// purposes only.

{

int j; // loop counter

if (size == 0)

cout

// The Ordered List code blows up below. Since this is just debugging

// code, we check for whether the OrderedList is defined, and if so,

// print out the key value. If not, we try printing out the entire item.

// Note: This assumes that you have used the double-inclusion protection

// in your OrderedList.cpp file by doing a "#ifndef ORDEREDLIST_CPP", etc.

// If not, you will need to comment out the code in the section under

// the "else", otherwise the compiler will go crazy in lab 4.

// The alternative is to overload operator

// the ordered list.

else

{

cout

for (j = 0; j

cout

cout

for (j = 0; j

if (j == cursor) {

cout

cout

#ifdef ORDEREDLIST_CPP

.getKey()

#endif

;

cout

cout

}

else

cout

#ifdef ORDEREDLIST_CPP

.getKey()

#endif

}

cout

}

}

///////////////////////////show3.cpp///////////////////////

//--------------------------------------------------------------------

//

// Laboratory 3 show3.cpp

//

// Array implementation of the showStructure operation for the

// List ADT

//

//--------------------------------------------------------------------

#include "ListArray.h"

template

void List:: showStructure () const

// outputs the data items in a list. if the list is empty, outputs

// "empty list". this operation is intended for testing/debugging

// purposes only.

{

int j; // loop counter

if ( size == 0 )

cout

// The Ordered List code blows up below. Since this is just debugging

// code, we check for whether the OrderedList is defined, and if so,

// print out the key value. If not, we try printing out the entire item.

// Note: This assumes that you have used the double-inclusion protection

// in your OrderedList.cpp file by doing a "#ifndef ORDEREDLIST_CPP", etc.

// If not, you will need to comment out the code in the section under

// the "else", otherwise the compiler will go crazy in lab 4.

// The alternative is to overload operator

// the ordered list.

else

{

cout

for ( j = 0 ; j

cout

cout

for ( j = 0 ; j

if( j == cursor ) {

cout

cout

#ifdef ORDEREDLIST_CPP

.getKey()

#endif

;

cout

cout

}

else

cout

#ifdef ORDEREDLIST_CPP

.getKey()

#endif

}

cout

}

}

/////////////////////////Sumintegers.cpp////////////////////////

#include

#include "ListArray.cpp" // Note that we are including the file

// containing the code -- NOT the header file

using namespace std;

int main ()

{

List samples(100); // Set of samples

int newSample, // Input sample

sum = 0; // Sum of the input samples

// Read in a set of samples from the keyboard.

cout

while ( cin >> newSample ) {

samples.insert(newSample);

}

// Sum the samples and output the result.

if ( ! samples.isEmpty() ) // If have data

{

samples.gotoBeginning(); // First set cursor to beginning of list

do {

sum += samples.getCursor(); // Add data item to running sum

} while ( samples.gotoNext() ); // Go to next data item (if any)

}

cout

return 0;

}

/////////////////////test3.cpp////////////////////////////

//--------------------------------------------------------------------

//

// Laboratory 3 test3.cpp

//

// Test program for the operations in the List ADT

//

//--------------------------------------------------------------------

#include

using namespace std;

// Because of C++ template implementations, must include source for templated class

// That is ugly, but it is required.

#include "ListArray.cpp"

#include "config.h"

void print_help();

void showTwoLists(List list1, List list2); // Displays two lists that are supposedly equivalent.

int main()

{

// hack: put a "try/catch" with list creation code?

// we need to demonstrate use of the try/catch syntax.

#if LAB3_TEST1

List testList(8); // Test list to test with ints

List copyList(testList); // Used to test copy constructor

List assignList; // Used to test assignment operator

int testData; // List data item

#else

List testList(8); // Test list to test with chars

List copyList(testList); // Used to test copy constructor

List assignList; // Used to test assignment operator

char testData; // List data item

#endif

int n; // Position within list

char cmd; // Input command

print_help();

do

{

testList.showStructure(); // Output list

cout

cin >> cmd;

if ( cmd == '+' || cmd == '=' || cmd == '?' )

cin >> testData;

else if ( cmd == 'M' || cmd == 'm' )

cin >> n;

switch ( cmd )

{

case 'H' : case 'h':

print_help();

break;

case '+' : // insert

cout

try

{

testList.insert(testData);

}

catch (logic_error &e)

{

cerr

}

break;

case '-' : // remove

cout

try

{

testList.remove();

}

catch (logic_error &e)

{

cerr

}

break;

case '=' : // replace

cout

try

{

testList.replace(testData);

}

catch (logic_error &e)

{

cerr

}

break;

case '@' : // getCursor

try

{

cout

}

catch (logic_error &e)

{

cerr

}

break;

case '

cout

try

{

testList.gotoBeginning();

}

catch (logic_error &e)

{

cerr

}

break;

case '>' : // gotoEnd

cout

try

{

testList.gotoEnd();

}

catch (logic_error &e)

{

cerr

}

break;

case 'N' : case 'n' : // gotoNext

try

{

if ( testList.gotoNext() )

cout

else

cout

}

catch (logic_error &e)

{

cerr

}

break;

case 'P' : case 'p' : // gotoPrior

try

{

if ( testList.gotoPrior() )

cout

else

cout

}

catch (logic_error &e)

{

cerr

}

break;

case 'C' : case 'c' : // clear

cout

testList.clear();

break;

case 'E' : case 'e' : // isEmpty

if ( testList.isEmpty() )

cout

else

cout

break;

case 'F' : case 'f' : // isFull

if ( testList.isFull() )

cout

else

cout

break;

case '!' :

showTwoLists(copyList, testList);

break;

case '#' :

assignList.insert('x');

assignList = testList;

showTwoLists(assignList, testList);

break;

#if LAB3_TEST2

case 'M' : case 'm' : // In-lab Exercise 2

cout

try

{

testList.moveToNth(n);

}

catch (logic_error &e)

{

cerr

}

break;

#endif // LAB3_TEST1

#if LAB3_TEST3

case '?' : // In-lab Exercise 3

try

{

if ( testList.find(testData) )

cout

else

cout

}

catch (logic_error &e)

{

cerr

}

break;

#endif // LAB3_TEST3

case 'Q' : case 'q' : // Quit test program

break;

default : // Invalid command

cout

}

}

while ( cin && cmd != 'Q' && cmd != 'q' );

if( !cin ) {

cout

}

return 0;

}

void showTwoLists(List list1, List list2) {

// Variables should match, but dynamic memory buffer must be different

cout

cout

list1.showStructure();

cout

list2.showStructure();

cout

}

void print_help()

{

cout

cout

cout

cout

cout

cout

cout

cout : Go to the end of the list"

cout

cout

cout

cout

cout

cout

cout

cout

#if LAB3_TEST2

#else

#endif // LAB3_TEST2

cout

#if LAB3_TEST3

#else

#endif // LAB3_TEST3

cout

cout

}

///////////////////listArray.h//////////////////////////

//--------------------------------------------------------------------

//

// Laboratory 3 ListArray.h

// **Instructor's Solution**

// Class declaration for the array implementation of the List ADT

//

//--------------------------------------------------------------------

#ifndef LISTARRAY_H

#define LISTARRAY_H

#include

#include

using namespace std;

#pragma warning( disable : 4290 )

template

class List

{

public:

static const int MAX_LIST_SIZE = 10; // Default maximum list size

// Constructors

List ( int maxNumber = MAX_LIST_SIZE ); // Default constructor

List ( const List& source ); // Copy constructor

// Overloaded assignment operator

List& operator= ( const List& source );

// Destructor

virtual ~List ();

// List manipulation operations

virtual void insert ( const DataType& newDataItem ) // Insert after cursor

throw ( logic_error );

void remove () throw ( logic_error ); // Remove data item

virtual void replace ( const DataType& newDataItem ) // Replace data item

throw ( logic_error );

void clear (); // Clear list

// List status operations

bool isEmpty () const; // List is empty

bool isFull () const; // List is full

// List iteration operations

void gotoBeginning () // Go to beginning

throw ( logic_error );

void gotoEnd () // Go to end

throw ( logic_error );

bool gotoNext () // Go to next data item

throw ( logic_error );

bool gotoPrior () // Go to prior data item

throw ( logic_error );

DataType getCursor () const

throw ( logic_error ); // Return data item

// Output the list structure -- used in testing/debugging

virtual void showStructure () const;

// In-lab operations

void moveToNth ( int n ) // Move data item to pos. n

throw ( logic_error );

bool find ( const DataType& searchDataItem ) // Find data item

throw ( logic_error );

protected:

// Data members

int maxSize,

size, // Actual number of data item in the list

cursor; // Cursor array index

DataType *dataItems; // Array containing the list data item

};

#endif

////////////////////////config.h////////////////////////////////

/**

* List class (Lab 3/Lab 4) configuration file.

* Activate test #N by defining the corresponding LAB3_TESTN to have the value 1.

*

* Because you will copy the List class code to your ordered list directory, having

* two "config.h" files presented the risk of accidentally replacing the one in the

* ordered list directory. So the two configuration files are combined for labs 3 and 4.

*

* NOTE!!! There was an error in the printed book. TEST1 shows up twice in the book.

* The basic List implementation uses TEST1 as described below, then exercise 2

* is activated by TEST2

*/

#define LAB3_TEST1 0 // 0 => test with char, 1 => test with int

#define LAB3_TEST2 0 // Prog exercise 2: moveToNth

#define LAB3_TEST3 0 // Prog exercise 3: find

/**

* Ordered list class tests.

*/

#define LAB4_TEST1 0 // merge: programming exercise 2

#define LAB4_TEST2 0 // subset: programming exercise 3

Source code download the attached zip file. It contains the Visual Studio project that you are required to modify. Exercises: implement the ListArray ADT [the declaration is given in ListArray.h implement the following operations: .gotoBeginning, gotoEnd, gotoNext, gotoPrior, getcursor (40 points) Programming Exercise 2: implement the member function move ToNth(...) that removes the item marked by the cursor and inserts it as the nth element of the list test your implementation by turning the flag LAB3_TEST2 from 0 to 1 in config.h; (30 points) Programming Exercise 3: implement the ListArray member function find(...) that searches for the element given as a parameter, the search starts at the cursor and stops when it finds the element or at the end of the list; the cursor remains on the last position searched; test your implementation by turning the flag LAB3_TEST3 from 0 to 1 in config.h; (30 points) Source code download the attached zip file. It contains the Visual Studio project that you are required to modify. Exercises: implement the ListArray ADT [the declaration is given in ListArray.h implement the following operations: .gotoBeginning, gotoEnd, gotoNext, gotoPrior, getcursor (40 points) Programming Exercise 2: implement the member function move ToNth(...) that removes the item marked by the cursor and inserts it as the nth element of the list test your implementation by turning the flag LAB3_TEST2 from 0 to 1 in config.h; (30 points) Programming Exercise 3: implement the ListArray member function find(...) that searches for the element given as a parameter, the search starts at the cursor and stops when it finds the element or at the end of the list; the cursor remains on the last position searched; test your implementation by turning the flag LAB3_TEST3 from 0 to 1 in config.h; (30 points)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered 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

Students also viewed these Databases questions