Question

Parsing Line Input

General Goal:
Create a C++ class and test program that:
• reads one line at a time from an ASCII file
• stores the individual words in an array
• prints the words in reverse order (on "one" line)

Details:
Create the implementation (oneline.cpp) and test program (main.cpp) for the following oneline.h file:
#include <string>
using namespace std;

class OneLine
{
   public:
      OneLine();
      ~OneLine();
      void breakLine();
      void printReverse();
      istream &readLine(istream& is);
      string returnLine();
   private:
      string oneLine;
      char **words;
      int wordCount;
      void resetLine();
};

The following provides a description of each of the functions implemented in oneline.cpp:
OneLine
• initialize oneLine to empty string
• initialize wordCount to 0

breakLine
• create a temporary C String version of oneLine
• use strtok to break the temporary line into words
• allocate enough space to hold all of the words and store them in words
• store a count of the number of words in wordCount
• (this is meant as a general algorithm, you may have to fiddle a little to get this working. Hint: this may involve cycling through all the words with strtok twice)

printReverse
• cycle through the words from wordCount-1 to 0
• print each word as you are cycling

readLine
• call resetLine to free up memory and reset oneLine and wordCount to empty string and zero respectively
• read one line from is (in this case, a file stream) and store it in oneLine
• return is

returnLine
• return oneLine

resetLine
• if allocation has occurred than free up the words
• set oneLine to be an empty string
• set wordCount to zero

~OneLine
• if allocation has occurred than free up the words

The following provides the algorithm of main.cpp:
1. create an ifstream for the file test.txt (please use this file for testing)
2. create a OneLine object
3. while you can still read from the file:
a. call readLine
b. call breakLine
c. call printReverse
4. close the file

For this assignment please use strdup whenever you need to allocate space and copy a string.
If your code is core dumping, you might want to try running it through valgrind with the command valgrind --leak-check=yes your executable. Look for messages of memory leaks. In the end, your code should have no memory leaks.

Output:
The following is a link to the output produced using test.txt:
• output.txt

If your run produces core dumps, or if you want to double check to ensure that you have no memory leaks, you can use valgrind. Use it as below:
• valgrind --leak-check=yes yourexecutable
• script this or try adding >& valgrind.out to the above line to save the output into a file called valgrind.out.

Solution Preview

This material may consist of step-by-step explanations on how to solve a problem or examples of proper writing, including the use of citations, references, bibliographies, and formatting. This material is made available for the sole purpose of studying and learning - misuse is strictly forbidden.

#include <iostream>
#include <fstream>
#include <cstring>
#include "oneline.h"
using namespace std;

int main ()
{
    ifstream is;
    is.open("test.txt", std::ifstream::in);
    if(!is.is_open())
   printf("Couldn't open file\n");

    OneLine test;
    test.readLine(is);
    test.breakLine();
    test.printReverse();
    is.close();

    return 0;
}...

This is only a preview of the solution. Please use the purchase button to see the entire solution

Related Homework Solutions

Number Conversion to Any Base
Homework Solution
$18.00
Base Conversion
Hexadecimal
Any Base
Convert
Number
Computer Science
C-Family Programming
Data Structures & Algorithms in C++
Homework Solution
$10.00
Computer Science
Programming
Data Structures
C++
Algorithms
AVL Trees
Rotation
Traversal
Input
Output
Characters
Lines
Keys
Operations
Statements
Variables
Word Search Program in C
Homework Solution
$30.00
Programming
C
Computer Science
Word Search
Characters
Symbols
Strings
Text Files
Functions
Output
Input
Count Function
Loops
Statements
Pointers
Variables
Shapes Program in C++
Homework Solution
$30.00
Programming
C++
Shapes
Codes
Metric Conversions
Mathematics
Functions
Area
Centimeters
Kilos
Points
Celsius
Fahrenheit
Circle
Square
Rectangle
Display Choices
Radius
Side Lengths
Input
Output
Repetition Structures
Homework Solution
$30.00
Computer
Science
C
Programming
Repetition
Structures
Table
Creator
Pseudocode
C++ Application For Biologists
Homework Solution
$40.00
Biology
Computer Science
Predators
Record
Species
Hierarchy
Lab Data
Animals
Registers
Memory
Variables
Loops
C++
Functions
Get help from a qualified tutor
Live Chats