题目描述
写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。
输入格式
四行字符,由大写字母组成,每行不超过100个字符
输出格式
由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。
输入样例
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. THIS IS AN EXAMPLE TO TEST FOR YOUR HISTOGRAM PROGRAM. HELLO!
输出样例
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
#include<bits/stdc++.h>
using namespace std;
int st[30];
int main()
{
for(int i=0;i<4;i++) //获取每行字符串并处理
{
string str;
getline(cin,str);
int n=str.size();
for(int j=0;j<n;j++)
if(str[j]>='A'&&str[j]<='Z') //统计每个字符出现的个数
{
int t=str[j]-'A';
st[t]++;
}
}
int maxv=0;
for(int i=0;i<26;i++) //统计字符出现最多的次数是多少
maxv=max(maxv,st[i]);
for(int i=maxv;i>=1;i--) //从次数最多到1
{
for(int j=0;j<26;j++)
{
if(st[j]>=i) cout<<"* "; //出现大于等于i次
else cout<<" ";//出现了不足i次
}
cout<<endl;
}
for(int i=0;i<26;i++) //输出从'A'到'Z'
cout<<char('A'+i)<<" ";
return 0;
}