【題解】洛谷1598 垂直柱狀圖

本題地址: http://www.luogu.org/problem/show?pid=1598

題目描述

寫一個程序從輸入文件中去讀取四行大寫字母(全都是大寫的,每行不超過72個字符),然後用柱狀圖輸出每個字符在輸入文件中出現的次數。嚴格地按照輸出樣例來安排你的輸出格式。

輸入輸出格式

輸入格式:

四行字符,由大寫字母組成,每行不超過72個字符

輸出格式:

由若干行組成,前幾行由空格和星號組成,最後一行則是由空格和字母組成的。在任何一行末尾不要打印不需要的多餘空格。不要打印任何空行。

輸入輸出樣例

輸入樣例#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

說明

每行輸出後面不允許出現多餘的空格。

簡單的模擬pascal很好寫,C++可能是還不熟所以總是寫錯,
P代碼如下
var i,j,x,m:longint;
 s:string;
 a:array[0..27]of longint;
function max(a,b:longint):longint;
 begin
  if a>b then exit(a)
   else exit(b);
 end;
begin
fillchar(a,sizeof(a),0);
m:=0;
for j:=1 to 4 do
 begin
  readln(s);
  for i:=1 to length(s) do
   if (s[i]>='A')and(s[i]<='Z') then
    begin
     x:=ord(s[i]-'A')+1;
     inc(a[x]);
     m:=max(a[x],m);
    end;
 end;
for i:=1 to m do
 begin
  for j:=1 to 25 do
   begin
    if m-a[j]
     write('*')
      else write(' ');
    write(' ');
   end;
  if m-a[26]
   writeln('*')
    else writeln(' ');
 end;
for i:=1 to 25 do
  write(chr(ord('A')-1+i),' ');
writeln('Z');
end.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章