Write a C++ program that reads text from a file called letter_count.txt. The pro
ID: 3753802 • Letter: W
Question
Write a C++ program that reads text from a file called letter_count.txt. The program determines which alphabetic character occurs most frequently in the text and which alphabetic character appears least frequently in the text. Your program must: 1. Read each line of the file, no matter how many lines there are. 2. Display an appropriate message if the letter_count.txt file is not found. 3. Count both lower case and upper case variants as the same character. In the text, “This is the time for all good men to come to the aid of their country”, the letter T occurs 7 times. 4. Ignore non-alphabetic characters, such as space, period, apostrophe, etc. 5. Display the most common letter in the file and its number of occurrences. 6. Display the least common letter in the file and its number of occurrences. 7. If there is a tie for the most (or least) common letter, the program only needs to display one of the letters which was most (or least) common. 8. For this program, only the C++ string class may be used. C-strings or C-string functions may not be used for this assignment. 9. Your program must include at least one function that uses one or more reference variables as parameters. 10. No global variables may be used for this program. Hints: Section 5.11 has examples of reading from a file. Program 5-22 illustrates reading until the End of File is found. The difference is that your program will read strings instead of ints. Program 12-8 illustrates how to use getline with C++ string objects in a loop. The toupper function can be used to convert lowercase letters to uppercase. The isalpha function can be used to determine if the character is an alphabetic character. You can use a 26 element integer array to keep track of the letter counts by subtracting ‘A’ from the Ascii value of the character. Like, letterCount[letter – ‘A’] = letterCount[letter – ‘A’] + 1; A sample file is down below) to test with. The correct output for this file is below. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Output: The most common letter is E with 147 occurances. The least common letter is J with 0 occurances.
______________________________________________________________________________________________________
To be, or not to be--that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune
Or to take arms against a sea of troubles
And by opposing end them. To die, to sleep--
No more--and by a sleep to say we end
The heartache, and the thousand natural shocks
That flesh is heir to. 'Tis a consummation
Devoutly to be wished. To die, to sleep--
To sleep--perchance to dream: ay, there's the rub,
For in that sleep of death what dreams may come
When we have shuffled off this mortal coil,
Must give us pause. There's the respect
That makes calamity of so long life.
For who would bear the whips and scorns of time,
Th' oppressor's wrong, the proud man's contumely
The pangs of despised love, the law's delay,
The insolence of office, and the spurns
That patient merit of th' unworthy takes,
When he himself might his quietus make
With a bare bodkin? Who would fardels bear,
To grunt and sweat under a weary life,
But that the dread of something after death,
The undiscovered country, from whose bourn
No traveller returns, puzzles the will,
And makes us rather bear those ills we have
Than fly to others that we know not of?
Thus conscience does make cowards of us all,
And thus the native hue of resolution
Is sicklied o'er with the pale cast of thought,
And enterprise of great pitch and moment
With this regard their currents turn awry
And lose the name of action. -- Soft you now,
The fair Ophelia! -- Nymph, in thy orisons
Be all my sins remembered.
Explanation / Answer
#include<iostream.h>
#include<ctype.h>
#include<fstream.h>
// creating a structure to keep track of both character and count
struct Letter_Stats
{
int count;
char ch;
};
void display(Letter_Stats,Letter_Stats);
int main()
{
ifstream inputfile;
char ch;
int i;
Letter_Stats stats[26];
Letter_Stats small , large;
inputfile.open("input.txt", ios::in);
if (inputfile.fail())
{
cout << "error in opening file";
return 1;
}
//initialize the array of structures
for (i=0;i<26;i++)
{
stats[i].count=0;
stats[i].ch=('A' + i);
}
//do till file ends
while (!inputfile.eof())
{
inputfile.get(ch);
//increment counter for appropriate character
if('A' <= toupper(ch) && toupper(ch) <= 'Z')
stats[toupper(ch) - 'A'].count++;
}
inputfile.close();
//finding most and least occuring characters by finding largest and smallest in array
small = stats[0];
large = stats[0];
for(i=1;i<26;i++)
{
if(stats[i].count > large.count)
{ large = Letter_Stats[i];
}
if(stats[i].count < small.count)
{ small = Letter_Stats[i];
}
}
display(large,small)
return 0;
}
//display most and least occurrences letters
void display(Letter_Stats lar , Letter_Stats sma)
{
cout<<"The most common Letter is"<< lar.ch <<"with"<<lar.count<<"occurances";
cout<<"The least common Letter is"<< sma.ch <<"with"<<sma.count<<"occurances";
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.