Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Letter Frequency Histogram

Posted on 2006-11-05
Medium Priority
962 Views
Hi , Does any one know of an example or tutorial of how to print a letter frequency histogram using a string phrase or word? Where only the letters used in the string would on the vertical axis and each letter's frequency would be represented by a certain character?
0
Question by:wkellya
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 84

Expert Comment

ID: 17878583
0

Author Comment

ID: 17879981
Thanks, but I need something like

string= Deed

1 2 3 4 5
d|**
e|**

1)How do I hide the letters not in the string a-z?
2)can this be done in a function that accepts string as a parameter?
0

LVL 24

Expert Comment

ID: 17880614
Well that's not too difficult if you spend some time thinking about it. You better uses some array then while displaying the result you check the content of this array. In C this might look like:

enum {MAX_ALPHABET_NUM=26};
char alphabet[MAX_ALPHABET_NUM] = {0};

for (int i = 0; i < MAX_ALPHABET_NUM; i++) {
if (alphabet[i] > 0)
// print the line
....

So with that both question are mostly answered.

Regards
Friedrich
0

Author Comment

ID: 17881495
say I have a string
char string[80];

can i print it like

printf("%13s%13s%13s%13s%13s\n","10","20","30","40","50");
for(int k=0;k<80;k++){
printf("%7c%13c%      ",k,string[k]);

for (int l=1; l<=string[i];l++){
printf("%c",'*');
}
printf("\n");
}

but count each letter?
0

LVL 24

Accepted Solution

fridom earned 750 total points
ID: 17882304
You have not assigned string any value, and you do not have any array to hole the counter for the number of characters.

So let's assume string[80] = "foobarbaz";
and you have int alphabet[26] = {0};
alphabet[0] contains the counters for the 'a's.

then you can fill the array this way (not tested just written from memory)

size_t str_len = strlen(string);

for (int i = 0; i < str_len; i++) {
char ch = string[i];
alphabet[tolower(ch) - 'a']++;
}

Then after going through string you have the numbers collected in alphabet

You then can print it as you like
ch = 'a';
for (int i = 0; i < 26 ; i++){
printf("%c occurs %d times\n", ch, alphabet[i]);
ch++;
}

Regards
Friedrich

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.
###### Suggested Courses
Course of the Month5 days, 1 hour left to enroll