Time Limit: | Memory Limit: |
---|---|
1000MS | 65536K |
Description:
编写程序以从输入文件中读取四行大写(即所有大写字母)文本输入(每行不超过72个字符),并打印一个垂直直方图,以显示每个字母多少次(但不包括空格,数字和标点符号)出现在全部大写的输入中。 完全按照所示格式格式化输出。
Input:
四行大写文本,每行不超过72个字符。
Output:
几行带有星号和空格,其后是一行,大写字母由空格分隔。 不要在任何行的末尾打印不需要的空白。 不要打印任何前导空白行。
注意需要输出全部的大写字母的柱状图,并不是只考虑出现的,非常坑人的一个地方
相信大家代码都会应该直接附上代码供参考:``
#include<iostream>
using namespace std;
int num[27] = { 0 };
int getmax(int* a)
{
int max = 0;
for (int i = 0; i < 26; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
return max;
}
int main()
{
for (int i = 0; i < 4; i++) {
char temp[1000];
cin.getline(temp, 999);
int sub = 0;
while (temp[sub] != '\0')
{
if (temp[sub] >= 'A' && temp[sub] <= 'Z')
{
num[temp[sub] - 'A']++;
}
sub++;
}
}
int max = getmax(num);
for (int i = 0; i < max; i++)
{
for (int j = 0; j < 26; j++)
{
int flag = 0;
for (int jj = j + 1; jj < 26; jj++)
{
if (num[jj] + i >= max)
{
flag = 1;
break;
}
}
if (flag)
{
if (num[j] + i >= max)
{
cout << "* ";
}
else
{
cout << " ";
}
}
else
{
if (num[j] + i >= max)
{
cout << "*";
break;
}
else
break;
}
}
cout << endl;
}
int flag = 0;
for (int i = 0; i < 26; i++)
{
if (flag)
{
cout << " ";
}
cout << char(i + 'A');
flag = 1;
}
return 0;
}