垂直柱状图(洛谷-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<cstring> #include<cstdio> using namespace std; int main() {char word[4][100]; int statistic[27]={0};int i,j,k;int max=0;for(i=0;i<4;i++)//輸入四行字母gets(word[i]);for(i=0;i<4;i++)//統計字母個數for(j=0;word[i][j]!='\0';j++)for(k=1;k<=26;k++)if(int(word[i][j]-64)==k)statistic[k]++;for(i=1;i<=26;i++)//求最大值if(max<statistic[i])max=statistic[i];max++;char column[28][100];for(i=1;i<=26;i++) column[i][0]=char(i+64);//存儲橫坐標的字母for(i=1;i<=26;i++)//按字母個數統計“*”{for(j=1;j<=max;j++){if(j<=statistic[i]) column[i][j]='*';else column[i][j]=' ';}}for(j=max-1;j>=0;j--)//按要求輸出{for(i=1;i<=26;i++){if(i<26) cout<<column[i][j]<<" ";else cout<<column[i][j];}if(j>0) cout<<endl;}return 0; }?
總結
以上是生活随笔為你收集整理的垂直柱状图(洛谷-P1598 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛C++语言:输出判断
- 下一篇: C语言基础知识----注意事项