垂直柱狀圖(模擬+字串)

明志留發表於2020-10-03
題目描述

寫一個程式從輸入檔案中去讀取四行大寫字母(全都是大寫的,每行不超過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<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int cp[26];//計數陣列
int main()
{
    int i,j,n,maxn=0;
    char a[110];
    for(int i=0;i<4;i++)
    {
  	gets(a);
  	n=strlen(a);
  	for(j=0;j<n;j++)
  	{
            if(a[j]>='A'&&a[j]<='Z')//統計字元出現次數 
            {
    		cp[a[j]-'A']++;
            }
  	}
    }
    for(int i=0;i<26;i++)
    {
  	maxn=max(maxn,cp[i]);
    } 
    for(i=maxn;i>0;i--)
    {
  	for(int j=0;j<26;j++)
  	{
            if(cp[j]>=i)
            {
    		cout<<"* ";
            }
   	    else
            {
    		cout<<"  ";
            }
        }
        cout<<endl;
    }
    for(i=0;i<26;i++)
    {
  	printf("%c ",i+'A');
    }
    return 0;
} 

相關文章