Task
Viết chương trình thống kê tần suất xuất hiện của các ký tự trong xâu s cho trước, chỉ xét các ký tự chữ cái và chữ số (a-z, A-Z, 0-9) có phân biệt hoa thường.
Input • Dòng duy nhất chứa xâu s có độ dài không quá 500 ký tự.
Output • In ra tần suất xuất hiện của các ký tự có trong xâu theo thứ tự bảng mã ASCII. Giá trị tần số xuất hiện sẽ chiếm 4 ô trống và được canh phải.
Samples
input ky Thuat laP Trinh 2017
output
0 1
1 1
2 1
7 1
P 1
T 2
a 2
h 2
i 1
k 1
l 1
n 1
r 1
t 1
u 1
y 1
Code:
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
int main()
{
char *s = new char[501];
gets(s);
int x = 0,b[100000],count = 0,d[100000],z = 0;
for(int i = 0 ; i < strlen(s) ; i++)
b[x++] = (int)*(s+i);
for(int i = 0 ; i < strlen(s) ; i++)
{
char c = (int)*(s+i);
if(c != 32)
{
if(c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 48 && c <= 57)
{
for(int j = 0 ; j < i + 1 ; j++)
{
if(c == b[j])
count++;
}
if(count == 1)
{
d[z++]=(int)*(s+i);
count = 0;
}
if(count > 1)
count = 0;
}
}
}
for(int i = 0 ; i < z - 1 ; i++)
{
for(int j = i + 1 ; j < z ; j++)
{
if(d[i] > d[j])
{
int t = d[i];
d[i] = d[j];
d[j] = t;
}
}
}
int f = 0;
for(int i = 0 ; i < z ; i++)
{
for(int j = 0 ; j < strlen(s) ; j++)
{
if(d[i] == (int)*(s+j))
f++;
}
cout<<(char)d[i]<<" "<<f<<endl;
f = 0;
}
return 0;
}