word counting, C/C++ Programming

Assignment Help:
Task
Your task is to write a program, words, that reports
information about the number of words read from its standard
input. For example, if the file qbf.txtcontains the text
the quick brown fox jumps
over the lazy dog
then running the program with is input redirected to come
from that file will report 9 words
$ words < qbf.txt
Total: 9
Automatic Testing
This task is available for automatic testing using the name words. You can run the demo using
demo wordsand you can test your work using try words <>.
Background
Use the following skeleton for the program:
int main(int argc, char** argv) {
enum { total, unique } mode = total;
for (int c; (c = getopt(argc, argv, "tu")) != -1;) {
switch(c) {
case ''t'': mode = total; break;
case ''u'': mode = unique; break;
}
}
argc -= optind;
argv += optind;
string word;
int count = 0;
while (cin >> word) {
count += 1;
}
switch (mode) {
case total: cout << "Total: " << count << endl; break;
case unique: cout << "Unique: " << "** missing **" << endl; break;
}
}
The getoptfunction (#include ) provides a standard way of handling option
values in command-line arguments to programs. It analyses the command-line parameters argc
and argv, looking for arguments that begin with ''-''. It then examines all such arguments for
specified option letters, returning individual letters on successive calls and adjusting the variable
optindto indicate which arguments it has processed. Consult getoptdocumentation for details.
In this case, the option processing code is used to optionally modify a variable that determines what
output the program should produce. By default, modeis set to total(indicating that it should
display the total number of words read). The getoptcode looks for the tand uoptions (which
would be specified on the command line as -tor -u) and overwrites the modevariable
accordingly. When there are no more options (indicated by getoptreturning -1), argcand
argvare adjusted to remove the option arguments that getopthas processed.
Computer Programming 2 Prac 4
Flinders University / School of Computer Science, Engineering, and Mathematics 1
Level 1: Unique words
Extend the program so that if run with the uoption (specified by the command-line argument
-u), it displays the number of unique words. To count unique words, use the STL vector
class to keep track of which words you''ve already seen. When each word is read, check to see
if it''s already in the vector; if it''s not, insert it. The number of unique words will then be the
size of the vector.
Level 2: Your Own Vector
Modify your code so that it does not use the STL classes. You''ll need to write your own class
to keep track of the list of words. At this level, you can assume that there will be no more that
1000 unique words, so you can use a statically allocated array to store the items.
A minimal STL-compliant class (which will minimise the changes you need to make to your
main program) would have an interface like this:
template class Vector {
public:
typedef T* iterator;
Vector();
iterator begin();
iterator end();
int size();
iterator insert(iterator position, const T& item);
private:
T items[1000];
int used;
};
Level 3: Individual Word Counts
Extend the program so that if run with the ioption it displays
the counts of individual words in alphabetical order. For
example the command
words-i < qbf.txt
should result in the output shown.
Your program will need to store two pieces of information for each
word. Define a struct called WordInfothat contains a string,
text, for the word''s text, and an int, count, for the number of times it''s been seen. Then
create a vector of WordInfoinstead of a vector of string. When you add a new word,
give it a count of 1. When you see a word that''s already in the vector, increment its count.
The simplest way to display the result in alphabetic order is to keep the vector in sorted order
as words are added, then simply iterate through the vector at the end. The insertion sort
algorithm is a suitable way to find where a new word should be inserted. Iterate through the
list until you find a word that''s alphabetically after the new word, then insert at that position.
Level 4: Large Data Sets
Make sure that your program works correctly (and efficiently!) even if it is run with large data
sets. Since you don''t know how large the collection of words might become, you''ll need to
make the vector grow dynamically. A suitable strategy is to allocate space for a small number
of items initially, and then check at each insert whether or not there''s still enough space.
When the space runs out, allocate a new block that''s twice as large, copy all of the old values
into the new space, then delete the old block.

Related Discussions:- word counting

Define the increment and decrement operators in c language, Define the Incr...

Define the Increment and Decrement Operators in c language? C offers two special operators -and ++ called decrement and increment operators respectively and these are unary ope

C program to find area of rectangle, Aim: To implement a program to find a...

Aim: To implement a program to find area of rectangle, surface area of box and volume of box using virtual functions. Code:                       class rect {

Pointer declaration for member function, P o i n t e r d...

P o i n t e r d e c l a r a t i o n f o r me m b e r f un c t i o n : M e t h o d 1 : W h e n C l a ss i s n o t

Write a structured and annotated c program, Intelligent homes are becoming ...

Intelligent homes are becoming increasingly popular as the cost/performance ratio of microcontrollers is continuously dropping.  These systems incorporate various transducers to de

Area under curve, Write a program to find the area under the curve y = f(x)...

Write a program to find the area under the curve y = f(x) between x = a and x = b, integrate y = f(x) between the limits of a and b. #include float start_point,

Super ascii string checker, Program which can check the given string is su...

Program which can check the given string is super ascii or not

Define four facilities provided by c language preprocessor, Define Four Fac...

Define Four Facilities Provided by C Language Preprocessor? The C language preprocessor provides four separate facilities that you can use as you see fit:   Inclusion

Define the modulo division operator in c language, Define the Modulo Divisi...

Define the Modulo Division Operator in c language? The C provides one more arithmetic operator % called as modulo division operator and this operator yields the remainder of an

How do i develop a subscript operator for a matrix class?, Employ operator ...

Employ operator () instead of operator[]. While you have multiple subscripts, the cleanest way to do it is along with operator () instead of with operator[]. The reason is that

C program to convert number to binary, Write a program in C that you will n...

Write a program in C that you will name "divide.exe", to divide one 32-bit twos-complement binary number by another, giving the quotient and the remainder, using the subtract-shift

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd