This assignment must be done in C only! NOT C++! - and should resemble the sampl
ID: 3536234 • Letter: T
Question
This assignment must be done in C only! NOT C++! - and should resemble the sample output.
Create a program called that does the following:
The absolute frequency of a character is the number of times the character appears. For example, in the string "aaab" the absolute frequency of 'a' is 3, and the absolute frequency of 'b' is 1.
The relative frequency of a character is the absolute frequency divided by the total number of characters. For example, in the string "aaab" the relative frequency of 'a' is 3/4 = 0.75, and the relative frequency of 'b' is 1/4 = 0.25. Relative frequency * 100 will give you the result in percentage
Sample Output
Program: String Processing
Author: Name Here
Enter string 1: This is a string
Enter string 2: This is also a string
Enter string 3: This is a test
String 1 is 16 bytes long, and String 2 is 21 bytes long
String 3 is: "This is so a string"
FREQUENCY TABLE
---------------
Char Count % of Total
---- ----- ----------
ALL 14 100.00%
" " 3 21.43%
"T" 1 7.14%
"a" 1 7.14%
"e" 1 7.14%
"h" 1 7.14%
"i" 2 14.29%
"s" 3 21.43%
"t" 2 14.29%
Explanation / Answer
#include<stdio.h>
#include<string.h>
int main()
{
char str1[255], str2[255]; //254 + 1extra for '/0' in strings
char str3[101],e; //100 + 1extra for '' in strings
int i,l1,l2,l3;
printf("Program: String Processing ");
printf("Author: Name Here ");
printf("Enter string 1: ");
gets(str1);
printf("Enter string 2: ");
gets(str2);
l1 = strlen(str1);
l2 = strlen(str2);
char string3[(l1+1)/2 + (l2+1)/2 + 1];
for(i=0;i<(l1+1)/2 + (l2+1)/2; i++)
{
if(i < (l1+1)/2)
{
string3[i] = str1[i];
}
else
{
string3[i] = str2[(l2/2) + i - (l1+1)/2];
}
}
string3[i] = '';
printf("Enter string 3: ");
gets(str3);
l3 = strlen(str3);
int sp=0, sm[26],bi[26];
for(i=0;i<26;i++) sm[i]=0;
for(i=0;i<26;i++) bi[i]=0;
//puts(str3);printf("l3 = %d ", l3);
for(i=0;i<l3;i++)
{
if(str3[i] == ' ') sp++;
else if (str3[i]>=65 && str3[i]<=90)
{
bi[str3[i]-65]++;
}
else
{
sm[str3[i]-97]++;
}
}
printf("String 1 is %d bytes long, and String 2 is %d bytes long ", l1,l2);
printf("String 3 is: '");
for(i=0;i<(l1+1)/2 + (l2+1)/2; i++)
{
printf("%c",string3[i]);
}
printf("' ");
printf("FREQUENCY TABLE ");
printf("------------------------ ");
printf("Char Count Percent of Total ");
printf("---- ----- ------------- ");
printf("ALL %d 100.00% ",l3);
printf("' ' %d %.2f% ", sp, 100.0*sp/l3);
for(i=0;i<26;i++)
{
if(bi[i] > 0)
{
printf("'%c' %d %.2f% ", i+65, bi[i], 100.0*bi[i]/l3);
}
}
for(i=0;i<26;i++)
{
if(sm[i] > 0)
{
printf("'%c' %d %.2f% ", i+97, sm[i], 100.0*sm[i]/l3);
}
}
return 0;
}