Assignment 5

advertisement
Prof. I Rudowsky
Spring 2008
CIS1.5 MW12
Assignment 5
Due date: April 30, 2008
This homework involves reading sentences from a file and determining the makeup of the sentences,
words and characters.
1. First, you will read in the sentences with the function
void readSentences(string sentences[], int &numSentences)
This will read in the sentences from a file named Sentences.txt (see below for the input)
Each line ends with a blank space after the last letter. This is necessary to make sure you get
all the words correctly.
The function will fill up an array named sentences and set a variable named numSentences (which is
passed by reference), which will be used in later functions as well. The function will also print out each
sentence as it is read in.
2. The next line in main calls the function countNumWords(string sentences[], int numSentences)
which will count how many words there are in all the sentences. Remember that there is a blank space
after each word.
3. Once the sentences are in the array sentences, call the function
countAlphaChars(string sentences[], int numSentences, int letters[])
which will go through each sentence, character by character, find where each letter is in the global
string alphabet and use that position as the index for the array letters which then be increased by 1.
Thus, letters[0] represents the letter A. Whenever an A is encountered in a sentence, letters[0] is
increased by 1. We use an index of 0 because in the string alphabet, the letter A is in position 0.
4. Once the array letters has been populated, the function printLetters(int letters[]) will be called to
print each letter and how many there were in all the sentences. Remember that letter [i] corresponds
to alphabet[i] so you can first print the letter and then the count in the same loop. Skip any letters
that have a count of 0.
5. Next the function
extractWords(int wordCount[], string words[], string sentences[],
int numSentences, int &wordsInList)
is called. This function goes through the sentences, extracts the words (use the substr string
function)one at a time. When a word is extracted, the array words is checked to see if the word is in
the array already. This can be done by looping through the array and comparing word[i] with the
extracted word to see if they are equal. The number of words in the list is stored in wordsInList which
is passed by reference to the function and initialized to 0. If there is no match, then set
words[wordsInList] to that word, set wordCount[wordsInList] to 1 and finally increase
wordsInList by 1. If the word is found in words[i] then just increase wordCount[i] by 1.
6. Finally, the function printWords(string words[], int wordCount[], int wordsInList)
is called to print the words stored in the array words and how many there are of each word from the
array wordCount. The variable wordsInList has the actual number of words stored.
PROGRAM OUTLINE:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void
void
int
void
void
void
readSentences(string[], int &);
countAlphaChars(string[], int, int[]);
countNumWords(string[], int);
extractWords( int[], string[], string[], int, int &);
printWords(string[], int [], int);
printLetters(int[]);
ifstream infile;
string alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int main()
{
string sentences[10];
int numSentences=0;
int wordsInList=0;
int letters[52] = {0}; //quick way to initialize the entire array to 0
int wordCount[100] = {0};
string words[100];
infile.open("C:\\Sentences.txt");
readSentences(sentences, numSentences);
cout<<"The number of words is "<<countNumWords(sentences,numSentences)<<endl<<endl;
countAlphaChars(sentences, numSentences, letters);
printLetters(letters);
extractWords(wordCount, words, sentences, numSentences, wordsInList);
printWords(words, wordCount, wordsInList);
infile.close();
system ("pause");
return 0;
}
void readSentences(string sentences[], int &numSentences){
}
void printLetters(int letters[]){
}
int countNumWords(string sentences[], int numSentences, char c){
}
void countAlphaChars(string sentences[], int numSentences, int letters[]){
}
void extractWords(int wordCount[], string words[], string sentences[], int numSentences, int
&wordsInList){
}
void printWords(string words[], int wordCount[], int wordsInList){
}
Sentences.txt
The number of words in a sentence is to be counted
Each sentence ends with a period
Each word is followed by a space or period
OUTPUT:
sentence 0: The number of words in a sentence is to be counted
sentence 1: Each sentence ends with a blank space
sentence 2: Each word is followed by a one space
There are 3 sentences
The number of words is 27
Letter
E
T
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
w
y
Word
The
number
of
words
in
a
sentence
is
to
be
counted
Each
ends
with
blank
space
word
followed
by
one
Count
2
1
8
4
7
5
15
2
4
4
1
3
1
10
8
2
3
8
5
2
4
1
Count
1
1
1
1
1
3
2
2
1
1
1
2
1
1
1
2
1
1
1
1
Download