Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ PROGRAMMING: In this assignment you will be writing a program that reads in a stream of text and tests for mismatched delimiters. First, you

C++ PROGRAMMING:

In this assignment you will be writing a program that reads in a stream of text and tests for mismatched delimiters.

First, you will create a stack class that stores, in each node, a character (char) , a line number (int) and a character count (int). This can either be based on a dynamic stack or a static stack from the book, modified according to these requirements. I suggest using a stack of structs that have the char, line number and character count as members, but you can do this separately (3 separate stacks) if you wish. This could require modifying the structure of the node itself in the stack and possibly the push/pop functions to take in more values.

Second your program should start reading in lines of text from the user. This reading in of lines of text (using getline) should only end when it receives the line DONE.

While the text is being read, you will use this stack to test the input for matching blocks. That is, the text will have the delimiters to bracket information into blocks, the braces {}, parentheses (), and brackets [ ]. A string is properly delimited if each right delimiter is matched with a preceding left delimiter of the same type in such a way that either the resulting blocks of information are disjoint, or one of them is completely nested in the other. Write a program that uses your stack to check whether the text file containing the blocks is properly delimited.

Implementation: All while accepting input, keep track of how many lines you have received already. To do the test, as you receive a line of text, start processing each line. To process each line, you have a few cases to deal with:

1) Ignore all non-delimiters.

2) If you receive a left delimiter,{([, push it onto the stack along with the line number and character in that line that the delimiter was found.

3) If you receive a right delimiter, ]}), pop the top of the stack and compare the characters. If the left matches with a right delimiter, then that is fine and continue processing. If they DO NOT MATCH, that is a problem, so output an error message showing the mismatch like the following:

Mismatched delimiter ( found at line 3, char 27 does not match } found at line 7, char 9

4) If your stack is ever empty when you need to pop, output an error message like the following: Right delimiter } had no left delimiter found at line 27, char 23

5) If you reach the end of input and the stack is not empty, output the content of the stack similarly as follows: Left delimiter [ at line 10, char 25 had no right delimiter. Left delimiter [ at line 7, char 3 had no right delimiter.

Final details:

1) Your stack should be implemented in its own .cpp file, with an appropriate .h file. You should then have another .cpp file that uses that stack class to test input for matching braces. This is the minimum, you can choose to use more files if you want.

2) Insure that your stack class works even for extremely large inputs, that is, make sure to check on whether your stack class is actually able to get memory. If unable to get enough memory, it should display an appropriate error message and shut down.

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

Database Concepts International Edition

Authors: David M. Kroenke

6th Edition International Edition

0133098222, 978-0133098228

More Books

Students also viewed these Databases questions