• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
香草味羊扒饭
博客园    首页    新随笔    联系   管理    订阅  订阅
P1598 垂直柱状图

题目描述

写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过100个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。

输入格式

四行字符,由大写字母组成,每行不超过100个字符

输出格式

由若干行组成,前几行由空格和星号组成,最后一行则是由空格和字母组成的。在任何一行末尾不要打印不需要的多余空格。不要打印任何空行。

输入输出样例

输入 #1
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
输出 #1
                            *
                            *
        *                   *
        *                   *     *   *
        *                   *     *   *
*       *     *             *     *   *
*       *     * *     * *   *     * * *
*       *   * * *     * *   * *   * * * *
*     * * * * * *     * * * * *   * * * *     * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N = 26,M = 110;
int main(){
	char a[M];
	int aa[N];
	memset(aa,0,sizeof aa);//这个置零搞了我好一会儿,这里不置为0,判断最大次数会有问题
	for(int i = 0;i < 4;i++){
		gets(a);
		int n = strlen(a);
		for(int j = 0;j < n;j++)	
			if(a[j] >='A' && a[j]<='Z'){
				int c;
				c = a[j] - 'A';
				aa[c]++;
			}
	}
	int maxn = 0;
	for(int i = 0;i < 26;i++){
		maxn = max(maxn,aa[i]);//找出出现次数最多的
	}

	for(int i = maxn;i > 0;i--)//从最大的情况往下输出
	{
		for(int j = 0;j < 26;j++)
		{
			if(aa[j] >= i) cout << "* ";//如果当前的次数大于的等于我们的i就*,也就是一个aa[j]可能会被判断很多遍
			else cout << "  ";
		}
		puts("");
	}	

	for(int i = 0;i < 26;i++) printf("%c ",i + 'A');
	return 0;
}

  

 

posted on 2019-10-14 10:56  香草味羊扒饭  阅读(154)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3