Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

***********HEADER FILE *************sequence2.h // FILE: sequence2.h // CLASS PROVIDED: sequence (part of the namespace main_savitch_4) // There is no implementation file provided for this class

image text in transcribed

***********HEADER FILE

*************sequence2.h

// FILE: sequence2.h

// CLASS PROVIDED: sequence (part of the namespace main_savitch_4)

// There is no implementation file provided for this class since it is

// an exercise from Chapter 4 of "Data Structures and Other Objects Using C++"

//

// TYPEDEFS and MEMBER CONSTANTS for the sequence class:

// typedef ____ value_type

// sequence::value_type is the data type of the items in the sequence. It

// may be any of the C++ built-in types (int, char, etc.), or a class with a

// default constructor, an assignment operator, and a copy constructor.

//

// typedef ____ size_type

// sequence::size_type is the data type of any variable that keeps track of

// how many items are in a sequence.

//

// static const size_type DEFAULT_CAPACITY = _____

// sequence::DEFAULT_CAPACITY is the initial capacity of a sequence that is

// created by the default constructor.

//

// CONSTRUCTOR for the sequence class:

// sequence(size_t initial_capacity = DEFAULT_CAPACITY)

// Postcondition: The sequence has been initialized as an empty sequence.

// The insert/attach functions will work efficiently (without allocating

// new memory) until this capacity is reached.

//

// MODIFICATION MEMBER FUNCTIONS for the sequence class:

// void resize(size_type new_capacity)

// Postcondition: The sequence's current capacity is changed to the

// new_capacity (but not less that the number of items already on the

// list). The insert/attach functions will work efficiently (without

// allocating new memory) until this new capacity is reached.

//

// void start( )

// Postcondition: The first item on the sequence becomes the current item

// (but if the sequence is empty, then there is no current item).

//

// void advance( )

// Precondition: is_item returns true.

// Postcondition: If the current item was already the last item in the

// sequence, then there is no longer any current item. Otherwise, the new

// current item is the item immediately after the original current item.

//

// void insert(const value_type& entry)

// Postcondition: A new copy of entry has been inserted in the sequence

// before the current item. If there was no current item, then the new entry

// has been inserted at the front of the sequence. In either case, the newly

// inserted item is now the current item of the sequence.

//

// void attach(const value_type& entry)

// Postcondition: A new copy of entry has been inserted in the sequence after

// the current item. If there was no current item, then the new entry has

// been attached to the end of the sequence. In either case, the newly

// inserted item is now the current item of the sequence.

//

// void remove_current( )

// Precondition: is_item returns true.

// Postcondition: The current item has been removed from the sequence, and the

// item after this (if there is one) is now the new current item.

//

// CONSTANT MEMBER FUNCTIONS for the sequence class:

// size_type size( ) const

// Postcondition: The return value is the number of items in the sequence.

//

// bool is_item( ) const

// Postcondition: A true return value indicates that there is a valid

// "current" item that may be retrieved by activating the current

// member function (listed below). A false return value indicates that

// there is no valid current item.

//

// value_type current( ) const

// Precondition: is_item( ) returns true.

// Postcondition: The item returned is the current item in the sequence.

//

// VALUE SEMANTICS for the sequence class:

// Assignments and the copy constructor may be used with sequence objects.

//

// DYNAMIC MEMORY USAGE by the List

// If there is insufficient dynamic memory, then the following functions

// throw a BAD_ALLOC exception: The constructors, insert, attach.

#ifndef MAIN_SAVITCH_SEQUENCE_H

#define MAIN_SAVITCH_SEQUENCE_H

#include // Provides size_t

namespace main_savitch_4

{

class sequence

{

public:

// TYPEDEFS and MEMBER CONSTANTS

typedef double value_type;

typedef std::size_t size_type;

static const size_type DEFAULT_CAPACITY = 30;

// CONSTRUCTORS and DESTRUCTOR

sequence(size_type initial_capacity = DEFAULT_CAPACITY);

sequence(const sequence& source);

~sequence( );

// MODIFICATION MEMBER FUNCTIONS

void resize(size_type new_capacity);

void start( );

void advance( );

void insert(const value_type& entry);

void attach(const value_type& entry);

void remove_current( );

void operator =(const sequence& source);

// CONSTANT MEMBER FUNCTIONS

size_type size( ) const;

bool is_item( ) const;

value_type current( ) const;

private:

value_type* data;

size_type used;

size_type current_index;

size_type capacity;

};

}

#endif

************* previous lab implementation file************

************sequence1.cpp

#include "sequence1.h"

#include

#include

using namespace std;

namespace main_savitch_3

{

// no argument constructor

sequence::sequence()

{

used = 0;

current_index = 0;

}

void sequence::start( )

{

current_index = 0;

}

void sequence::advance( )

{

assert(is_item());

current_index++;

}

void sequence::insert(const value_type& entry)

{

assert(size()

if(!is_item())

{

current_index = 0;

}

if(size() > 0)

{

for(int i = size(); i > current_index; i--)

{

data[i] = data[i-1];

}

}

data[current_index] = entry;

used++;

}

void sequence::attach(const value_type& entry)

{

assert(size()

if (!is_item())

current_index=used;

else

{

current_index++;

for(size_type i=used;i>current_index;i--)

data[i]=data[i-1];

}

data[current_index]=entry;

used++;

}

void sequence::remove_current( )

{

assert(is_item());

used--;

for(size_type i= current_index;i

data[i]=data[i+1];

}

// CONSTANT MEMBER FUNCTIONS

sequence::size_type sequence::size( ) const

{

return used;

}

bool sequence::is_item( ) const

{

return used > current_index;

}

sequence::value_type sequence::current( ) const

{

return data[current_index];

}

}

Please include the new implemented file and any other changes in the header file. Thank you

The purpose of this lab is to help reinforce container class concepts in C++ Specifically, you will be repeating the lab from last week except you will be using a dynamic array for the sequence class. Note that there is no upper bound on the size of the sequence. You need to use the author's files sequence2.h and sequence_exam2.cpp. This Lab assignment requires you to implement all functions for this sequence class. Refer to bag2.h, bag2.cxx and sequencel.cpp (implemented in your previous lab) to get an idea ofhow to work on this lab

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

Understanding Databases Concepts And Practice

Authors: Suzanne W Dietrich

1st Edition

1119827949, 9781119827948

More Books

Students also viewed these Databases questions

Question

=+Who are you right now, and where do you want to be?

Answered: 1 week ago