基于EasyX实现的字符统计器(条形统计图)
文章目录
- EasyX官网
- 思路
- 编译环境
- 参考代码
EasyX官网
最近闲来无事,在家里用EasyX写了一个简(jian)洁(lou)的字母统计程序,刚好锻炼一下自己的实战能力,程序截图如下:
思路
- 对于输入的数据,利用桶排序统计其中个个字符的数量
- 求出所有数据中的最大值,将单位‘1’的长度求出
- 对于所有字符,绘制出 ‘1’*字符数量×16 的矩形,并在下方打印字符,上方打印字符数量
- 等待用户输入按键
编译环境
绘图库 | 编译软件 |
---|---|
EasyX_20200610 | Visual Studio 2019 |
关于这两个软件如何安装,请参考我以前的一篇博客
参考代码
#include <graphics.h> //这是EasyX绘图库的头文件
#include <iostream> //cin,cout
#include <conio.h> //_getch()
#include <string> //string
using namespace std;int bucket[36], max_len;
string s;// 延迟输出效果
void coutx(string s, DWORD dwMilliseconds)
{for (int i = 0; s[i]; i++){cout << s[i];Sleep(dwMilliseconds);}
}// 华丽的开场
void worldofwar()
{coutx("|------------------------------------", 7);Sleep(200);coutx(" 字母统计器 ", 15);Sleep(200);coutx("------------------------------------|\n", 7);Sleep(800);coutx(" ", 0);coutx("开发者:", 50);Sleep(1000);coutx("神采奕奕\n\n", 50);Sleep(1000);coutx(" 请输入您要统计的字符串", 25);Sleep(300);coutx("(可包含空格、", 25);Sleep(200);coutx("小写字母、", 25);Sleep(200);coutx("数字,", 25);Sleep(200);coutx("不能有汉字),", 25);Sleep(300);coutx("以一行 Ctrl+Z 结尾:\n", 25);Sleep(500);coutx(" 注:", 7);Sleep(300);coutx("大写字母当做小写字母统计\n\n", 25);
}//画条形统计图
void bar_chart()
{// 窗口初始化 initgraph(750, 400);setbkcolor(0xffffff);cleardevice();// 字体初始化settextstyle(30, 15, L"Consolas", 0, 0, 10, false, false, false);settextcolor(0x000000);setfillcolor(0xa0ef90);LOGFONT f;gettextstyle(&f);f.lfQuality = ANTIALIASED_QUALITY;settextstyle(&f);/*** 屏幕尺寸:750*400* 左右留白:17* 条形宽度:16* 条形间隔:4* 上下留白:30* 字母高度:30* 数字高度:15* 条形最大高度:325*/// 一个字母在统计图中的高度int one = 300 / max_len;for (int i = 0; i < 36; i++){// 下方字符大小调整 f.lfHeight = 30;f.lfWidth = 15;settextstyle(&f);// 下方字符输出if (i < 10) outtextxy(17 + i * 20, 340, i + '0');else outtextxy(17 + i * 20, 340, i + 'a' - 10);// 统计条solidrectangle(16 + i * 20, 340 - ceil(one * bucket[i]), 16 + i * 20 + 16, 340);// 上方数字大小调整f.lfHeight = 16;f.lfWidth = 8;settextstyle(&f);// 上方数字输出TCHAR s[10];swprintf_s(s, 10, _T("%d"), bucket[i]);outtextxy(16 + i * 20 + 8 - (bucket[i] == 0 ? 1 : ceil(log10(bucket[i] + 1))) * 4, 340 - ceil(one * bucket[i]) - 20, s);}
}
int main()
{// 华丽的输入 worldofwar();while (getline(cin, s)){for (int i = 0; s[i]; i++){// 统计字符出现个数及最大个数 if (isdigit(s[i])) bucket[s[i] - '0']++, max_len = max(max_len, bucket[s[i] - '0']);if (islower(s[i])) bucket[s[i] - 'a' + 10]++, max_len = max(max_len, bucket[s[i] - 'a' + 10]);if (isupper(s[i])) bucket[s[i] - 'A' + 10]++, max_len = max(max_len, bucket[s[i] - 'A' + 10]);}}// 绘制条形统计图bar_chart();// 等待_getch();return 0;
}
基于EasyX实现的字符统计器(条形统计图)相关推荐
- 英语词频统计器分词器基于Java
需要代码请留言 综合实训报告 题 目 英语词频分析器 中国·武汉 2019年 7月 目录 需求分析文档 6 一.引言 6 1.编写目的 6 2.项目背景 6 二.任务概述 6 1.系统定义 7 2.运 ...
- 16位流应用与代码统计器例题
16位流应用: 使用PrintStream进行打印并且输出到控制台以及文本上,每次的输出要带有一个格式为:yyyy-MM-dd HH:mm:ss 的时间. 首先写一个类继承于PrintStream, ...
- python实现微信群友统计器
基于微信可以做很多有意思的练手项目,看了这张速查表你就会发现,可以做的事情超过你的想象. 有一次我想要统计微信群里哪些同学在北京,但发现直接问是很难得到准确结果的-- 这时候不如运用 wxpy 这个库 ...
- 用c语言统计注释数量,c语言代码统计器.doc
PAGE 2 摘 要 本课题的主要任务是开发一款代码行数统计器,专门用于统计C语言或C++语言程序代码文件.该统计器的主要功能是统计代码文件的文件行数.有效代码行数.注释行数.空白行数,以及计算代码的 ...
- linux设备驱动程序jd,Linux设备驱动程序学习(基于2440的GPIO字符设备驱动)
基于2440的GPIO字符设备驱动及应用程序是针对2440型号的底板的驱动及测试应用程序,详细情况请见底板的PCB图. S3C2440提供130 路复用的IO口线,分为如下端口进行管理: - Port ...
- lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...
- 【less-11】基于SQLI的POST字符型SQL注入
实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 基于SQLI的POST字符型SQL注入 实验目的 实验环境 实验原理 实验步骤 第一步 判断是够存在POST型注入点 ...
- 基于CRNN的文本字符交易验证码识别--Paddle实战
基于CRNN的文本字符验证码识别 本项目链接,欢迎大家Fork:https://aistudio.baidu.com/aistudio/projectdetail/3501451 Paddle学习资料 ...
- 【精选】基于EasyX的贪吃蛇小游戏
文章目录 前言 一.项目环境 1.Visual Studio 2019 2.EasyX 20200902 二.运行效果展示 0.加载游戏 1.主菜单 2.游戏设置 3.游戏说明 4.生存模式 5.无尽 ...
最新文章
- SpringBoot配置文件值注入方式
- RocketMQ 消息丢失场景分析及如何解决!
- 离线轻量级大数据平台Spark之中文字符显示问题的解决
- R可视化lend_club 全球最大的P2P平台数据75W条
- 【CSS3】CSS3文本相关属性大全
- 因果推断笔记——数据科学领域因果推断案例集锦(九)
- mysql服务重启后不见了_太狗血!翔安已婚男出轨KTV服务员,致其怀孕后避而不见!情人上门讨要说法后原配妻子也......
- 如何养成好的Linux操作习惯
- Java JDK 动态代理(AOP)使用及实现原理分析
- 苹果手机怎么修改dns服务器,苹果手机怎么设置DNS iPhone8更改DNS详细图文教程
- JZYZOJ1384 种花小游戏 状压dp
- mac宽带连接找不到pppoe服务器,mac苹果电脑如何建立PPPoE拨号连接上网
- 案牍写作中要留意的问题
- DP之Warshall算法和Floyd算法
- 异质信息网络表征学习综述
- 华为慧通面试后----我的首篇blog
- 算法入门——搬砖问题
- Cloudera Manager中安装部署Livy服务
- 上手ChatGPT威力加强版后,我发现它很强,但也有点拉。。。
- kfb转tif后信息丢失的解决方案