文章目录

  • 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实现的字符统计器(条形统计图)相关推荐

  1. 英语词频统计器分词器基于Java

    需要代码请留言 综合实训报告 题 目 英语词频分析器 中国·武汉 2019年 7月 目录 需求分析文档 6 一.引言 6 1.编写目的 6 2.项目背景 6 二.任务概述 6 1.系统定义 7 2.运 ...

  2. 16位流应用与代码统计器例题

    16位流应用: 使用PrintStream进行打印并且输出到控制台以及文本上,每次的输出要带有一个格式为:yyyy-MM-dd  HH:mm:ss 的时间. 首先写一个类继承于PrintStream, ...

  3. python实现微信群友统计器

    基于微信可以做很多有意思的练手项目,看了这张速查表你就会发现,可以做的事情超过你的想象. 有一次我想要统计微信群里哪些同学在北京,但发现直接问是很难得到准确结果的-- 这时候不如运用 wxpy 这个库 ...

  4. 用c语言统计注释数量,c语言代码统计器.doc

    PAGE 2 摘 要 本课题的主要任务是开发一款代码行数统计器,专门用于统计C语言或C++语言程序代码文件.该统计器的主要功能是统计代码文件的文件行数.有效代码行数.注释行数.空白行数,以及计算代码的 ...

  5. linux设备驱动程序jd,Linux设备驱动程序学习(基于2440的GPIO字符设备驱动)

    基于2440的GPIO字符设备驱动及应用程序是针对2440型号的底板的驱动及测试应用程序,详细情况请见底板的PCB图. S3C2440提供130 路复用的IO口线,分为如下端口进行管理: - Port ...

  6. lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库

    LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...

  7. 【less-11】基于SQLI的POST字符型SQL注入

    实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 基于SQLI的POST字符型SQL注入 实验目的 实验环境 实验原理 实验步骤 第一步 判断是够存在POST型注入点 ...

  8. 基于CRNN的文本字符交易验证码识别--Paddle实战

    基于CRNN的文本字符验证码识别 本项目链接,欢迎大家Fork:https://aistudio.baidu.com/aistudio/projectdetail/3501451 Paddle学习资料 ...

  9. 【精选】基于EasyX的贪吃蛇小游戏

    文章目录 前言 一.项目环境 1.Visual Studio 2019 2.EasyX 20200902 二.运行效果展示 0.加载游戏 1.主菜单 2.游戏设置 3.游戏说明 4.生存模式 5.无尽 ...

最新文章

  1. SpringBoot配置文件值注入方式
  2. RocketMQ 消息丢失场景分析及如何解决!
  3. 离线轻量级大数据平台Spark之中文字符显示问题的解决
  4. R可视化lend_club 全球最大的P2P平台数据75W条
  5. 【CSS3】CSS3文本相关属性大全
  6. 因果推断笔记——数据科学领域因果推断案例集锦(九)
  7. mysql服务重启后不见了_太狗血!翔安已婚男出轨KTV服务员,致其怀孕后避而不见!情人上门讨要说法后原配妻子也......
  8. 如何养成好的Linux操作习惯
  9. Java JDK 动态代理(AOP)使用及实现原理分析
  10. 苹果手机怎么修改dns服务器,苹果手机怎么设置DNS iPhone8更改DNS详细图文教程
  11. JZYZOJ1384 种花小游戏 状压dp
  12. mac宽带连接找不到pppoe服务器,mac苹果电脑如何建立PPPoE拨号连接上网
  13. 案牍写作中要留意的问题
  14. DP之Warshall算法和Floyd算法
  15. 异质信息网络表征学习综述
  16. 华为慧通面试后----我的首篇blog
  17. 算法入门——搬砖问题
  18. Cloudera Manager中安装部署Livy服务
  19. 上手ChatGPT威力加强版后,我发现它很强,但也有点拉。。。
  20. kfb转tif后信息丢失的解决方案

热门文章

  1. (windows下)php-ini文件和开启gd库支持
  2. python怎么加锁_python使用fcntl模块实现程序加锁的方法
  3. マッチ売りの少女(卖火柴的小女孩)
  4. 店铺销售管理系统有哪些用?该如何选?
  5. 手机游戏修改群出品----修改之浅谈
  6. python的实现原理_python爬虫实现原理
  7. js操作 ifarm contentWindow属性
  8. 精选10个Python库,几行代码轻松搞定探索性数据分析!
  9. java的webdriver_WebDriver之java篇
  10. MySQL7_基础_单行函数