码迷,mamicode.com
首页 > 其他好文 > 详细

统计字母和数字,打印出直方图

时间:2015-04-28 15:44:24      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<ctype.h>
 5 #include<algorithm>
 6 using namespace std;
 7 int main(int argc, char* argv[])
 8 {
 9     char ch[1024];
10     gets(ch);
11     //puts(ch);
12     int alp=0,dig=0,oth=0;
13     int len=strlen(ch);
14     for(int i=0 ; i<len ; ++i)
15     {
16         if(isdigit(ch[i]))
17             ++dig;
18         else if(isalpha(ch[i]))
19             ++alp;
20         else
21             ++oth;
22     }
23     int sum[3];
24     sum[0]=dig,sum[1]=alp,sum[2]=oth;
25     sort(sum,sum+3);
26     int MAX=sum[2];                //找到最大值
27     char* A[13];
28     for(int i=0 ; i<13 ; ++i)
29         A[i]=(char* )calloc(MAX,sizeof(char));
30 
31     for(int i=0 ; i<MAX ; ++i)        //先赋值位空格
32         for(int j=0 ; j<13 ; ++j)
33             A[j][i]= ;            //【warning】动态划分的数字是先列后行,注意转换
34 
35 
36     for(int i=0 ; i<3 ; ++i)        //填上dig
37         for(int j=MAX-dig ; j<MAX ; ++j)
38             A[i][j]=*;
39 
40     for(int i=5 ; i<8 ; ++i)        //填上alp
41         for(int j=MAX-alp ; j<MAX ; ++j)
42             A[i][j]=\3;
43 
44     for(int i=10 ; i<13 ; ++i)        //填上oth
45         for(int j=MAX-oth ; j<MAX ; ++j)
46             A[i][j]=\2;
47     printf("%3d  %3d  %3d\n",dig,alp,oth);
48     for(int i=0 ; i<MAX ; ++i)
49     {
50         for(int j=0 ; j<13 ; ++j)
51             printf("%c",A[j][i]);
52         printf("\n");
53     }
54     printf("dig  alp  oth\n");
55     printf("%3d  %3d  %3d\n",dig,alp,oth);
56     system("pause");
57     return 0;
58 }

 

统计字母和数字,打印出直方图

标签:

原文地址:http://www.cnblogs.com/Evence/p/4462950.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!