Question
i dont know how to solve exercise 1 stepb 1 and 2 my teacher gave us the source code and told us to solve exercise
i dont know how to solve exercise 1 stepb 1 and 2
my teacher gave us the source code and told us to solve exercise 1
i attached 2 pictrure of the my hw
and the source code
config.h:
/** * Text class (Lab 1) configuration file. * Activate test 'N' by defining the corresponding LAB1_TESTN to have the value 1. */
#define LAB1_TEST1 0 // Programming exercise 2: toUpper and toLower #define LAB1_TEST2 0 // Programming exercise 3: ==,
Text.h:
//-------------------------------------------------------------------- // // Laboratory 1 Text.h // **Instructor's Solution** // Class declaration for the array implementation of the Text ADT // //--------------------------------------------------------------------
#ifndef TEXT_H #define TEXT_H
#include #include
using namespace std;
class Text { public:
// Constructors and operator= Text ( const char *charSeq = "" ); // Initialize using char* Text ( const Text &other ); // Copy constructor void operator = ( const Text &other ); // Assignment
// Destructor ~Text ();
// Text operations int getLength () const; // # characters char operator [] ( int n ) const; // Subscript void clear (); // Clear string
// Output the string structure -- used in testing/debugging void showStructure () const;
//-------------------------------------------------------------------- // In-lab operations // toUpper/toLower operations (Programming Exercise 2) Text toUpper( ) const; // Create upper-case copy Text toLower( ) const; // Create lower-case copy
// Relational operations (Programming Exercise 3) bool operator == ( const Text& other ) const; bool operator ( const Text& other ) const;
private:
// Data members int bufferSize; // Size of the string buffer char *buffer; // Text buffer containing a null-terminated sequence of characters
// Friends
// Text input/output operations (In-lab Exercise 1) friend istream & operator >> ( istream& input, Text& inputText ); friend ostream & operator
};
#endif
test1.cpp:
//-------------------------------------------------------------------- // // Laboratory 1 test1.cpp // // Test program for the operations in the Text ADT // //--------------------------------------------------------------------
#include #include "Text.h" #include "config.h"
//-------------------------------------------------------------------- // // Function prototype
void copyTester ( Text copyText ); // copyText is passed by value void print_help ( );
//--------------------------------------------------------------------
int main() { Text a("a"), // Predefined test text objects alp("alp"), alpha("alpha"), epsilon("epsilon"), empty, assignText, // Destination for assignment inputText; // Input text object int n; // Input subscript char ch, // Character specified by subscript selection; // Input test selection
// Get user test selection. print_help();
// Execute the selected test. cin >> selection;
cout
case '3' : // Test 3 : Tests the subscript operation. cout > n; ch = alpha[n]; cout
case '4' : // Test 4 : Tests the assignment and clear operations. cout
case '5' : // Test 5 : Tests the copy constructor and operator= operations. cout
cout
case '6' : // In-lab Exercise 2 // Test 6 : Tests toUpper and toLower cout > inputText; cout
case '7' : // In-lab Exercise 3 // Test 7 : Tests the relational operations. cout " epsilon) alpha) alpha)alpha) alp) alpha) a) alpha)empty)empty)
default : cout
system("pause"); return 0; }
//--------------------------------------------------------------------
void copyTester ( Text copyText )
// Dummy routine that is passed a text object using call by value. Outputs // copyText and clears it.
{ cout
//--------------------------------------------------------------------
void print_help() { cout
cout
cout
Text.cpp:
#include #include #include #include #include "Text.h"
Text::Text ( const char *charSeq ) { bufferSize = strlen(charSeq) + 1; buffer = new char[bufferSize]; strcpy(buffer, charSeq); }
Text::Text ( const Text &other ) { bufferSize = other.bufferSize; buffer = new char[bufferSize]; strcpy(buffer, other.buffer); }
void Text::operator = ( const Text &other ) { int len = other.bufferSize; if (len > bufferSize) { delete[] buffer; bufferSize = other.bufferSize; buffer = new char[bufferSize]; } strcpy(buffer, other.buffer); }
Text::~Text () { delete[] buffer; }
int Text::getLength () const { return bufferSize - 1; }
char Text::operator [] ( int n ) const { // check if n is out of range first return 0; }
void Text::clear () { buffer[0] = '\0'; }
void Text::showStructure() const
// Outputs the characters in a string. This operation is intended for // testing/debugging purposes only.
{ int j; // Loop counter
for (j = 0; j
Text Text::toUpper( ) const { Text temp; for (int i = 0; i 96 && (buffer[i]
Text Text::toLower( ) const { Text temp; for (int i = 0; i 64 && (buffer[i]
bool Text::operator == ( const Text& other ) const { { if (bufferSize == other.getLength()) { if (bufferSize == 0) { return true; } else { for (int i = 0; i
bool Text::operator
bool Text::operator > ( const Text& other ) const { if (bufferSize > other.getLength()) { return true; } else { return false; } }
textio.cpp:
//-------------------------------------------------------------------- // // Laboratory 1, In-lab Exercise 1 textio.cpp // // String input/output operations // //--------------------------------------------------------------------
#include #include
#include "Text.h"
//--------------------------------------------------------------------
istream & operator >> ( istream &input, Text& inputText )
// Text input function. Extracts a string from istream input and // returns it in inputText. Returns the state of the input stream.
{ const int textBufferSize = 256; // Large (but finite) char textBuffer [textBufferSize]; // text buffer
// Read a string into textBuffer, setw is used to prevent buffer // overflow.
input >> setw(textBufferSize) >> textBuffer;
// Apply the Text(char*) constructor to convert textBuffer to // a string. Assign the resulting string to inputText using the // assignment operator.
inputText = textBuffer;
// Return the s
Text ADT1 This format requires that your program maintain a running count of the number of tokens that have been read from the text file. Assume that the tokens in the text file are delimited by whitespace-an assumption that is not true for C++ programs in general. Step 3: Test your lexical analysis program using the C++ program in the file progsamp.dat as input. The contents of this file are shown here. void main ) int j total O for (j-1;jStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access with AI-Powered Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started