P1598 垂直柱状图(模拟)

简介: P1598 垂直柱状图(模拟)

题目描述



写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过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


说明/提示



每行输出后面不允许出现多余的空格。

我们可以建立一个数组,然后用出现次数最多的字符数量控制行,进行打印,就行了,一般文章这种我们都用getline,可以直接打出一串字符串,而cin的输入打不出来完整的含空格的字符串。


具体实现看代码。

#include<bits/stdc++.h>
using namespace std;
string s1,s2,s3,s4;
int maxx,a[30];
char b[110][30];//最后输出的数组。
int main(){
    getline(cin,s1);
    getline(cin,s2);
    getline(cin,s3);
    getline(cin,s4);
    //读入数据
    for(int i=0;i<s1.size();i++){
        if(s1[i]>='A'&&s1[i]<='Z'){
            a[s1[i]-'A'+1]++;
        }
    }
    for(int i=0;i<s2.size();i++){
        if(s2[i]>='A'&&s2[i]<='Z'){
            a[s2[i]-'A'+1]++;
        }
    }
    for(int i=0;i<s3.size();i++){
        if(s3[i]>='A'&&s3[i]<='Z'){
            a[s3[i]-'A'+1]++;
        }
    }
    for(int i=0;i<s4.size();i++){
        if(s4[i]>='A'&&s4[i]<='Z'){
            a[s4[i]-'A'+1]++;
        }
    }
    //统计字母
    for(int i=1;i<=26;i++){
        maxx=max(maxx,a[i]);
    }
    //求最高的高度
    for(int i=1;i<=26;i++){
        for(int j=maxx;j>=maxx-a[i]+1;j--){
            b[j][i]='*';
        }
        for(int j=maxx-a[i];j>=1;j-- )
     b[j][i]=' ';
        b[maxx+1][i]=i+'A'-1;
    }
    for(int i=1;i<=maxx+1;i++){
        for(int j=1;j<=51;j++){
            if(j%2==0){
                cout<<' ';
                continue;
            }
            cout<<b[i][j/2+1];
        }
        cout<<endl;//如果听懂,希望留下你的赞
    }
}


相关文章
|
存储 Kubernetes 数据可视化
|
8月前
|
人工智能 供应链 数据挖掘
销售易CRM:深度赋能制造业,驱动产业链升级
销售易CRM是国内领先的客户关系管理系统,助力制造业从传统模式向智能化、服务化转型。通过全链路客户旅程管理,提升客户生命周期价值;智能数据分析赋能精准决策;跨部门协作打破信息孤岛;持续技术创新如AI、大数据等优化系统功能。以某机械制造企业为例,客户满意度提升30%,复购率增长20%。销售易CRM成为制造业数字化转型的坚实伙伴,推动企业迈向卓越运营,在竞争中脱颖而出。
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
874 2
编译QCefView+VS2019+QT5.15.2
|
数据可视化 Java API
Knife4j的相关知识点!!
Knife4j的相关知识点!!
494 2
|
JavaScript 前端开发 API
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
2072 0
|
存储 JSON 前端开发
【Java】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天
在实际项目中,使用 `@JsonFormat(pattern = &quot;yyyy-MM-dd&quot;)` 注解导致出生日期少了一天的问题,根源在于夏令时的影响。本文详细解析了夏令时的概念、`@JsonFormat` 注解的使用方法,并提供了三种解决方案:在注解中添加 `timezone = GMT+8`、修改 JVM 参数 `-Duser.timezone=GMT+08`,以及使用 `timezone = Asia/Shanghai
1576 0
【Java】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天
|
iOS开发
XCode控制台调试无法看到函数跟踪或无法看到输出的日志问题及解决方案
XCode控制台调试无法看到函数跟踪或无法看到输出的日志问题及解决方案
836 0
APP逆向百例|02|某app签名验证去除
APP逆向百例|02|某app签名验证去除
651 2
|
安全 网络安全 数据库
扫描神器:Nessus 保姆级教程(附步骤)
扫描神器:Nessus 保姆级教程(附破解步骤)
|
Java Maven
maven配置阿里云镜像源
maven配置阿里云镜像源
41424 1