华师一附中OI组
标题:
P1598 垂直柱状图
[打印本页]
作者:
admin
时间:
2018-4-24 15:07
标题:
P1598 垂直柱状图
https://www.luogu.org/problemnew/show/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
说明
每行输出后面不允许出现多余的空格。
复制代码
作者:
倚窗倾听风吹雨
时间:
2018-7-2 09:33
#include<iostream>
#include<cstring>
using namespace std;
string a,b,c,d,e="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";
int i,j,n[26],maxn;
int main()
{
getline(cin,a);
getline(cin,b);
getline(cin,c);
getline(cin,d);
for(i=0; i<=50; i+=2)
{
for(j=0; j<a.size(); j++)
if(a[j]==e[i])n[i/2]++;
for(j=0; j<b.size(); j++)
if(b[j]==e[i])n[i/2]++;
for(j=0; j<c.size(); j++)
if(c[j]==e[i])n[i/2]++;
for(j=0; j<d.size(); j++)
if(d[j]==e[i])n[i/2]++;
}
for(i=0;i<=25;i++)if(n[i]>maxn)maxn=n[i];
for(i=maxn;i>0;i--)
{
for(j=0;j<26;j++)
if(n[j]>=i)
{
if(j!=25)cout<<"* ";
else cout<<"*";
}
else
{
if(j!=25)cout<<" ";
else cout<<" ";
}
cout<<endl;
}
cout<<e;
}
复制代码
作者:
admin
时间:
2018-7-2 15:45
#include<iostream>
#include <cstdio>
using namespace std;
const int oo=99999999;
string s; ///检查用
char ch;
int a[26]; ///统计每个字母出现的次数 a[0]是'A'出现的次数
int main()
{
int maxx=-oo; ///最大值
while (scanf("%c",&ch)!=EOF) ///读入技巧
{
s=s+ch;///检查用
if (ch>='A' && ch<='Z')
{
a[ch-'A']++;
if (a[ch-'A']>maxx) maxx=a[ch-'A'];
///if (++a[ch-'A']>maxx) maxx=a[ch-'A'];
///maxx=max(maxx,++a[ch-'A'])
}
}
///cout<<s; 检查
for (int i=maxx; i>=1; i--)
{
for (ch='A'; ch<='Z'; ch++) if (a[ch-'A']>=i) cout<<"* ";
else cout<<" ";
cout<<endl;
}
for (ch='A';ch<='Z'; ch++) cout<<ch<<' ';
return 0;
}
复制代码
作者:
admin
时间:
2018-7-2 16:20
1、EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1:#define EOF (-1)。除了表示文件结尾,EOF还可以表示标准输入的结尾。因为有时候无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。
2、在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,可以是文本文件,也可以是标准输入stdin。在文本文件中,数据都是以字符的ASCII代码值的形式存放。对于普通文本,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。在windows平台,stdin输入流的EOF标志是 ctrl + z。在unix平台,stdin输入流的EOF标志是 ctrl + d。
作者:
universehyf
时间:
2018-7-8 15:29
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int i,j,d,maxn;
char k;
struct aaa{
int a;int b;
}x[26];
int main()
{
for(i=0;i<=3;i++)
{
getline(cin,s);
for(j=0;j<=s.length()-1;j++)
if((s[j]>='A')&&(s[j]<='Z'))
x[s[j]-'A'].a++;
}
for(i=0;i<=25;i++) x[i].b=i;
d=x[0].a;
maxn=0;for(i=0;i<=25;i++) maxn=max(x[i].a,maxn);d=maxn;
while(d>0)
{
for(i=0;i<=25;i++)
{
if(d<=x[i].a) cout<<'*';
else cout<<' ';
if(i!=25) cout<<' ';
}
d--;
cout<<endl;
}
for(k='A';k<='Z';k++) {cout<<k;if(k!='Z') cout<<' ';}
return 0;
}
复制代码
作者:
universehyf
时间:
2018-7-8 15:30
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int i,j,d,maxn;
char k;
struct aaa{
int a;int b;
}x[26];
int main()
{
for(i=0;i<=3;i++)
{
getline(cin,s);
for(j=0;j<=s.length()-1;j++)
if((s[j]>='A')&&(s[j]<='Z'))
x[s[j]-'A'].a++;
}
for(i=0;i<=25;i++) x[i].b=i;
d=x[0].a;
maxn=0;for(i=0;i<=25;i++) maxn=max(x[i].a,maxn);d=maxn;
while(d>0)
{
for(i=0;i<=25;i++)
{
if(d<=x[i].a) cout<<'*';
else cout<<' ';
if(i!=25) cout<<' ';
}
d--;
cout<<endl;
}
for(k='A';k<='Z';k++) {cout<<k;if(k!='Z') cout<<' ';}
return 0;
}
复制代码
作者:
吴语林
时间:
2018-7-29 19:54
#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstring>
#include <map>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
using namespace std;
char c;
int t[26],i,j,all;
int main()
{
while(~scanf("%c",&c))
if(c>='A' && c<='Z')
t[c-'A']++;
for(i=0; i<=25; i++)
if(t[i]>all)
all=t[i];
for(i=all; i>=1; i--)
{
for(j=0; j<=25; j++)
if(t[j]==i)
printf("* "),t[j]--;
else printf(" ");
printf("\n");
}
for(i=0; i<26; i++)
printf("%c ",i+'A');
return 0;
}
复制代码
作者:
黄煦喆
时间:
2018-8-1 20:44
#include<iostream>
#include<algorithm>
using namespace std;
int letters[26],maxv;
string s;
int main()
{
for(int i=1; i<=4; i++)
{
getline(cin,s);
for(int i=0; i<s.size(); i++)
if(s[i]<='Z's[i]>='A')letters[s[i]-'A']++;
}
maxv=*max_element(letters,letters+26);
while(maxv)
{
for(int i=0; i<26-1; i++)
if(letters[i]>=maxv)cout<<'*'<<' ';
else cout<<" ";
if(letters[25]>=maxv)cout<<'*';
else cout<<' ';
cout<<endl;
maxv--;
}
for(int i=0; i<26-1; i++)cout<<char(i+'A')<<' ';
cout<<'Z';
return 0;
}
复制代码
作者:
admin
时间:
2019-3-24 09:17
#include <iostream>
using namespace std;
string s,s1,s2,s3,s4;
int a[26];
char ch;
int maxc,i,l,m;
int main()
{
getline(cin,s1);
getline(cin,s2);
getline(cin,s3);
getline(cin,s4);
s=s1+s2+s3+s4;
l=s.size();
cout<<s<<endl;
for (i=0; i<=25; i++) a[i]=0;
for (i=0; i<=l-1; i++)
{
ch=s[i];
if (ch<='Z' && ch>='A') a[ch-'A']++;
}
/*cout<<endl;
for (ch='A';ch<='Z';ch++) {cout<<a[ch-'A']<<' ';}cout<<endl;
for (ch='A';ch<='Z';ch++) {cout<<ch<<' ';}
*/
maxc=0;
for (i=0; i<=25; i++) if (a[i]>maxc) maxc=a[i];
for (m=maxc; m>=1; m--)
{
for (i=0; i<=25; i++)
{
if (a[i]>=m) cout<<'*';
else cout<<' ';
///cout<<' ';
}
cout<<endl;
}
for (ch='A'; ch<='Z'; ch++) cout<<ch;
return 0;
}
复制代码
作者:
秀木于林
时间:
2019-3-24 10:44
#include<iostream>
using namespace std;
string s,s1,s2,s3,s4;
int i,l,maxc,n;
char ch;
int a[26];
int main()
{
getline(cin,s1);
getline(cin,s2);
getline(cin,s3);
getline(cin,s4);
s=s1+s2+s3+s4;
l=s.size();
for(i=0;i<=25;i++) a[i]=0;
for(i=0;i<=l-1;i++)
{
ch=s[i];
if(ch>='A'&&ch<='Z') a[ch-'A']++;
}
maxc=0;
for(i=0;i<=25;i++) if(a[i]>maxc) maxc=a[i];
for(n=maxc;n>=1;n--)
{
for(i=0;i<=25;i++)
{
if(a[i]>=n) cout<<'*';
else cout<<' ';
cout<<' ';
}
cout<<endl;
}
for(ch='A';ch<='Z';ch++) cout<<ch<<' ';
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2