Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Implemen of the sequence class. When satisfied run against main.cpp from the sit

ID: 3848566 • Letter: I

Question

Implemen of the sequence class. When satisfied run against main.cpp from the site.

This will check to see if it is done correctly.

What to turn in: 1. Your sequence file. 2. Your output (using main.cpp).

// FILE: sequence1.h

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

// There is no implementation file provided for this class since it is // an exercise from Section 3.2 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 CAPACITY = _____ // sequence::CAPACITY is the maximum number of items that a sequence can hold. // // CONSTRUCTOR for the sequence class: // sequence( ) // Postcondition: The sequence has been initialized as an empty sequence. // // MODIFICATION MEMBER FUNCTIONS for the sequence class: // 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) // Precondition: size( ) < CAPACITY. // 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) // Precondition: size( ) < CAPACITY. // 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. #ifndef MAIN_SAVITCH_SEQUENCE_H #define MAIN_SAVITCH_SEQUENCE_H #include

// Provides size_t namespace main_savitch_3 { class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type CAPACITY = 30; //

CONSTRUCTOR sequence( );

// MODIFICATION MEMBER FUNCTIONS void start( ); void advance( ); void insert(const value_type& entry); void attach(const value_type& entry); void remove_current( ); // CONSTANT MEMBER FUNCTIONS size_type size( ) const; bool is_item( ) const; value_type current( ) const; private: value_type data[CAPACITY]; size_type used; size_type current_index; }; } #endif

Explanation / Answer

#ifndef MAIN_SAVITCH_SEQUENCE_H

#define MAIN_SAVITCH_SEQUENCE_H

#include <cstdlib> // Provides size_t

namespace main_savitch_3

{

class sequence

{

public:

//TYPEDEFS and MEMBER CONSTANTS

typedef double value_type;

typedef std::size_t size_type;

static const size_type CAPACITY = 30;

//CONSTRUCTOR

sequence();

//MODIFICATION MEMBER FUNCTIONS

void start();

void advance():

void insert(const value_type& entry);

void remove_current();

//CONSTANT MEMBER FUNCTIONS

size_type size() const;

bool is_item() const;

value_type current() const;

private:

value_type data[CAPACITY];

size_type used;

size_type current_index;

};

}

#endif

// FILE: sequence1.h

#include "sequence1.h"

namespace main_savitch_3{

   sequence::sequence(){
       current_index = -1;
       used = 0;
   }

   // MODIFICATION MEMBER FUNCTIONS
   void sequence::start(){
       if(used == 0){
           current_index = -1;
       }
       else{
           current_index = 0;
       }
   }

   void sequence::advance(){
       if(current_index == used - 1){
           current_index = -1;
       }
       else{
           ++current_index;
       }
   }

   void sequence::insert(const value_type& entry){
       int pos;
       if(current_index == -1){
           pos = 0;
       }
       else{
           pos = current_index;
       }
       for(int i = used; i > pos; --i){
           data[i] = data[i - 1];
       }
       data[pos] = entry;
       current_index = pos;
   }

   void sequence::attach(const value_type& entry){
       int pos;
       if(current_index == -1){
           pos = used;
       }
       else{
           pos = current_index;
       }
       for(int i = used; i > pos; --i){
           data[i] = data[i - 1];
       }
       data[pos] = entry;
       current_index = pos;
   }

   void sequence::remove_current(){
       if(used > 0){
           for(int i = current_index; i < used - 1; ++i){
               data[i] = data[i + 1];
           }
           used--;
       }
   }


   // CONSTANT MEMBER FUNCTIONS
   sequence::size_type sequence::size() const{
       return used;
   }

   bool sequence::is_item() const{
       return current_index >= 0 && current_index < used;
   }

   sequence::value_type sequence::current() const{
       return data[current_index];
   }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote