229k views
4 votes
Letter Frequency Write a function that will take a string and return a count of each letter in the string. For example, "my dog ate my homework" contains 3 m's, 3 o's, 2 e's, 2 y's and one each of d, g, a, t, h, w, r and k. 2 Your function should take a single string argument and return a dynamically allocated array of 26 integers representing the count of each of the letters a . . z respectively. Your function should be case insensitive, i.e., count 'A' and 'a' as the occurrence of the letter a. [Hint: use the letter to integer conversion functions.] Do not count non-letter characters (i.e., spaces, punctuation, digits, etc.) Write a program that will solicit a string from the user using getline, call your letter frequency function and print out the frequency of each letter in the string. Do not list letters that do not occur at least once. Example: Enter a string: my dog at my homework Letter frequency a 1 d 1 e 1 g 1 h 1 k 1 m 3 o 3 r 1 t 1 w 1 y 2

User Nyree
by
4.5k points

1 Answer

3 votes

Answer:

Check the explanation

Step-by-step explanation:

Code to copy:

// ConsoleApplication7.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <iostream>

#include <cstring>

#include <string>

using namespace std;

int * letterFrequency(char s[]);

int main()

{

int *freq_letters;

char *s = new char[100];

freq_letters = new int[26];

//To read the input string in order to find the frequency of each letter

cout << "Enter a string: ";

cin.getline(s, ' ');

//call the function to find the occurrence of each alphabet

freq_letters = letterFrequency(s);

//Display the count

cout << "Letter Frequency " << endl;

for (int i = 0; i < 26; i++)

{

//Constriant to check if the letter appeared at least once in the string and so printing the frequency of its occurence

if (freq_letters[i] != 0)

cout << " " << static_cast<char>(i + 'a') << " " << freq_letters[i] << endl;

}

system("pause");

return 0;

}

//Define the function to find occurrence of each letter in the input string

int * letterFrequency(char s[])

{

int *occurrence_array;

//to store the output of occurrences for each alphabet

occurrence_array = new int[26];

// to store the count of occurrence for each letter temporarily

int letter_count;

// for loop to check the occurrence for all 26 alphabets

for (int i = 0; i < 26; i++)

{

letter_count = 0;

for (int j = 0; j < strlen(s); j++)

{

/*comparing the ascii values of each alphabet with every character from the string by converting it to lower case i.e. case insensitive*/

if (int('a') + i == int(tolower(s[j])))

letter_count++;

}

occurrence_array[i] = letter_count;//To store the count calculated for each alphabet

}

return occurrence_array;

}

The following below code screenshot and output shows that when the string is entered, the output will shows each lettercount irrespective of whether the letter is in capitals or small and does not count non-letter characters (i.e spaces, punctuations etc.)

Letter Frequency Write a function that will take a string and return a count of each-example-1
Letter Frequency Write a function that will take a string and return a count of each-example-2
Letter Frequency Write a function that will take a string and return a count of each-example-3
User Dimba
by
4.4k points