93 #ifndef SEQUENCE_H 94 #define SEQUENCE_H 95 96 99 100 101 102 103 104 97 98 { 105 106 107 108 109 110 111 112 113 114 115 116 117 #include // provides size_t 118 119 120 namespace CS3358_FA2022 class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type DEFAULT_CAPACITY // CONSTRUCTORS and DESTRUCTOR sequence (size_type initial_capacity sequence (const sequence& source); ~sequence(); // MODIFICATION MEMBER FUNCTIONS void resize(size_type new_capacity); void start(); = = 30; DEFAULT_CAPACITY); void advance(); void insert (const value_type& entry); void attach(const value_type& entry); void remove_current(); sequence& operator=(const sequence& source); // CONSTANT MEMBER FUNCTIONS size_type size() const; bool is_item() const;

C++ for Engineers and Scientists
4th Edition
ISBN:9781133187844
Author:Bronson, Gary J.
Publisher:Bronson, Gary J.
Chapter13: Structures
Section: Chapter Questions
Problem 3PP
icon
Related questions
Question

// CLASS PROVIDED: sequence (part of the namespace CS3358_FA2022)
//
// 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 default initial capacity of a
//    sequence that is created by the default constructor.
//
// CONSTRUCTOR for the sequence class:
//   sequence(size_type initial_capacity = DEFAULT_CAPACITY)
//    Pre:  initial_capacity > 0
//    Post: 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.
//    Note: If Pre is not met, initial_capacity will be adjusted to 1.
//
// MODIFICATION MEMBER FUNCTIONS for the sequence class:
//   void resize(size_type new_capacity)
//    Pre:  new_capacity > 0
//    Post: The sequence's current capacity is changed to new_capacity
//      (but not less that the number of items already on the sequence).
//      The insert/attach functions will work efficiently (without
//      allocating new memory) until this new capacity is reached.
//    Note: If new_capacity is less than used, it will be made equal to
//      to used (in order to preserve existing data). Thereafter, if Pre
//      is not met, new_capacity will be adjusted to 1.
//
//   void start()
//    Pre:  none
//    Post: The first item on the sequence becomes the current item
//      (but if the sequence is empty, then there is no current item).
//
//   void advance()
//    Pre:  is_item returns true.
//    Post: 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)
//    Pre:  none
//    Post: 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)
//    Pre:  none
//    Post: 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()
//    Pre:  is_item returns true.
//    Post: The current item has been removed from the sequence, and
//      the item after this (if there is one) is now the new current
//      item. If the current item was already the last item in the
//      sequence, then there is no longer any current item.
//
// CONSTANT MEMBER FUNCTIONS for the sequence class:
//   size_type size() const
//    Pre:  none
//    Post: The return value is the number of items in the sequence.
//
//   bool is_item() const
//    Pre:  none
//    Post: 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
//    Pre:  is_item() returns true.
//    Post: 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.

93 #ifndef SEQUENCE_H
94 #define SEQUENCE_H
95
96
99
100
101
102
103
104
97
98 {
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <cstdlib> // provides size_t
118
119
120
namespace CS3358_FA2022
class sequence
{
public:
// TYPEDEFS and MEMBER CONSTANTS
typedef double value_type;
typedef std::size_t size_type;
static const size_type DEFAULT_CAPACITY
// CONSTRUCTORS and DESTRUCTOR
sequence (size_type initial_capacity
sequence (const sequence& source);
~sequence();
// MODIFICATION MEMBER FUNCTIONS
void resize(size_type new_capacity);
void start();
=
=
30;
DEFAULT_CAPACITY);
void advance();
void insert (const value_type& entry);
void attach(const value_type& entry);
void remove_current();
sequence& operator=(const sequence& source);
// CONSTANT MEMBER FUNCTIONS
size_type size() const;
bool is_item() const;
Transcribed Image Text:93 #ifndef SEQUENCE_H 94 #define SEQUENCE_H 95 96 99 100 101 102 103 104 97 98 { 105 106 107 108 109 110 111 112 113 114 115 116 117 #include <cstdlib> // provides size_t 118 119 120 namespace CS3358_FA2022 class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type DEFAULT_CAPACITY // CONSTRUCTORS and DESTRUCTOR sequence (size_type initial_capacity sequence (const sequence& source); ~sequence(); // MODIFICATION MEMBER FUNCTIONS void resize(size_type new_capacity); void start(); = = 30; DEFAULT_CAPACITY); void advance(); void insert (const value_type& entry); void attach(const value_type& entry); void remove_current(); sequence& operator=(const sequence& source); // CONSTANT MEMBER FUNCTIONS size_type size() const; bool is_item() const;
121
122
123
124
value_type current() const;
value_type* data;
size_type used;
size_type current_index;
size_type capacity;
}
private:
125
126
127
128
129
130 #endif
Transcribed Image Text:121 122 123 124 value_type current() const; value_type* data; size_type used; size_type current_index; size_type capacity; } private: 125 126 127 128 129 130 #endif
Expert Solution
Step 1

#include <iostream> // Provides cout and cin
#include <cstdlib> // Provides EXIT_SUCCESS
#include "sequence1.h" // With value_type defined as double
using namespace std;
using namespace main_savitch_3;

// PROTOTYPES for functions used by this test program:
void print_menu( );
// Postcondition: A menu of choices for this program has been written to cout.

char get_user_command( );
// Postcondition: The user has been prompted to enter a one character command.
// The next character has been read (skipping blanks and newline characters),
// and this character has been returned.

void show_sequence(sequence display);
// Postcondition: The items on display have been printed to cout (one per line).

double get_number( );
// Postcondition: The user has been prompted to enter a real number. The
// number has been read, echoed to the screen, and returned by the function.


int main( )
{
    sequence test; // A sequence that well perform tests on
    char choice; // A command character entered by the user

    cout << "I have initialized an empty sequence of real numbers." << endl;

    do
    {
        print_menu( );
        choice = toupper(get_user_command( ));
        switch (choice)
        {
            case '!': test.start( );
            break;
            case '+': test.advance( );
            break;
            case '?': if (test.is_item( ))
            cout << "There is an item." << endl;
            else
            cout << "There is no current item." << endl;
            break;
            case 'C': if (test.is_item( ))
            cout << "Current item is: " << test.current( ) << endl;
            else
            cout << "There is no current item." << endl;
            break;
            case 'P': show_sequence(test);
            break;
            case 'S': cout << "Size is " << test.size( ) << '.' << endl;
            break;
            case 'I': test.insert(get_number( ));
            break;
            case 'A': test.attach(get_number( ));
            break;
            case 'R': test.remove_current( );
            cout << "The current item has been removed." << endl;
            break;
            case 'Q': cout << "Ridicule is the best test of truth." << endl;
            break;
            default: cout << choice << " is invalid." << endl;
        }
    }
    while ((choice != 'Q'));

    return EXIT_SUCCESS;
}

void print_menu( )
// Library facilities used: iostream.h
{
cout << endl; // Print blank line before the menu
cout << "The following choices are available: " << endl;
cout << " ! Activate the start( ) function" << endl;
cout << " + Activate the advance( ) function" << endl;
cout << " ? Print the result from the is_item( ) function" << endl;
cout << " C Print the result from the current( ) function" << endl;
cout << " P Print a copy of the entire sequence" << endl;
cout << " S Print the result from the size( ) function" << endl;
cout << " I Insert a new number with the insert(...) function" << endl;
cout << " A Attach a new number with the attach(...) function" << endl;
cout << " R Activate the remove_current( ) function" << endl;
cout << " Q Quit this test program" << endl;
}

char get_user_command( )
// Library facilities used: iostream
{
char command;

cout << "Enter choice: ";
cin >> command; // Input of characters skips blanks and newline character

return command;
}

void show_sequence(sequence display)
// Library facilities used: iostream
{
for (display.start( ); display.is_item( ); display.advance( ))
cout << display.current( ) << endl;
}

double get_number( )
// Library facilities used: iostream
{
double result;

cout << "Please enter a real number for the sequence: ";
cin >> result;
cout << result << " has been read." << endl;
return result;
}

//end of sequence_test.cpp

steps

Step by step

Solved in 2 steps with 5 images

Blurred answer
Knowledge Booster
Variables
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT