编写一个程序,打印输入中各个字符出现频度的直方图
来源:互联网 发布:自学广告设计软件 编辑:程序博客网 时间:2024/05/22 10:34
#include <stdio.h>
#define MAXHIST 15#define MAXWORD 11#define IN 1#define OUT 0int main(){ int c,i,j,nc,state; int len; int maxvalue; int ovflow; int wl[MAXWORD]; state = OUT; nc = 0; ovflow = 0; for(i = 0; i < MAXWORD; ++i) wl[i] = 0; while((c = getchar()) != EOF) { if(c == ' '|| c == '\n' || c == '\t') { state = OUT; if(nc > 0) if(nc < MAXWORD) ++wl[nc]; else ++ovflow; nc = 0; } else if(state == OUT) { state = IN; nc = 1; } else ++nc; } maxvalue = 0; for(i = 1; i < MAXWORD; ++i) if(wl[i] > maxvalue) maxvalue = wl[i];#if 0 for(i = 1; i < MAXWORD; ++i) { printf("%5d - %5d :",i,wl[i]); if(wl[i] > 0) { if((len = wl[i] * MAXHIST / maxvalue) <= 0) len = 1; } else len = 0; while(len > 0) { putchar("*"); --len; } putchar('\n'); }#else for(i = MAXWORD; i > 0; --i) { for(j = 1; j < MAXWORD; ++j) if(wl[j] * MAXWORD / maxvalue >= i) printf(" * "); else printf(" "); putchar('\n'); } for(i = 1; i < MAXWORD; ++i) printf("%4d ",i); putchar('\n'); for(i = 1; i < MAXWORD; ++i) printf("%4d ",wl[i]); putchar('\n');#endif if(ovflow > 0) printf("%d words >= %d\n",ovflow,MAXWORD); return 0;}
该程序利用循环getchar()读取单词,把不同长度单词出现频数存放在数组中,利用循环打印。
分别实现了水平直方图和垂直直方图注意:
绘制直方图时的判断if((len = wl[i] * MAXHIST / maxvalue) <= 0)用到了归一化的原理,w[i]是长度i单词出现的频数,maxvalue是最大频数,由于频数无上限,故限制成一定的输出长度MAXHIST。可以看成当前长度与最大长度的比例*限制 wl[i]/maxvalue * MAXHIST
示例结果:
把该程序重定向到输入
阅读全文
0 0
- 编写一个程序,打印输入中各个字符出现的频度的直方图
- 练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图
- 编写一个程序,打印输入中各个字符出现频度的直方图
- 练习 1-14 编写一个程序,打印输入中各个字符出现频度的直方图
- 打印各个字符出现频度的直方图
- 打印输入中各个字符出现频率的直方图
- 打印输入中各个字符出现频率的直方图
- 编写一个程序,打印输入中单词长度的直方图
- 编写一个程序,打印输入中单词长度的直方图
- 打印字符串中各个字符出现的频率的直方图
- 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易
- 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易。
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- 打印输入中各字符出现次数的直方图
- 第7周 C语言程序设计(新2版) 练习1-14 打印输出各个字符出现频度的直方图(输出结果有问题)
- 练习1-13 编写一个程序,打印输入中单词长度的直方图
- Android,安卓,toolbar,menu显示位置
- HDU 6136 Death Podracing(优先队列+循环链表)
- hdu6134 Battlestation Operational【2017多校第八场】
- java数据结构与算法-堆
- FFmpegFrameRecorder
- 编写一个程序,打印输入中各个字符出现频度的直方图
- html 布局小技巧
- 816
- ADF中解析 EL 表达式
- 大文件分块上传第三弹(分块并发上传)
- STM32延时注意事项
- ListView与ScrollView冲突解决三种方法
- DROOL 5分钟上手Case
- IP的获取与转换