周蕊-第二次作业

news/2025/1/23 0:47:40/文章来源:https://www.cnblogs.com/zhou-rui/p/18511768
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc
这个作业的目标 设计一个命令行文本计数统计程序
姓名-学号 周蕊-2022329301039

我的码云地址: https://gitee.com/little-bear-huilai/the-second-homework.git

1. 项目简介及函数介绍

1.1. 项目简介

  本项目旨在实现对文本文件进行多种维度的分析和统计功能,包括统计文本中的字符数、单词数、句子数、代码行数、空行数以及注释行数等。通过提供简单易用的命令接口,用户可以方便地对指定文本文件进行相关指标的获取。

1.2. 具体作业

实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。
具体命令行界面要求举例:
命令模式: wc.exe [参数] [文件名]
wc.exe -c file.txt 统计字符数
wc.exe -w file.txt 统计单词数
扩展功能(加分项):统计代码行、空行、注释行等,并提供相应命令接口。
作业要求:

1、项目代码上传到自己的码云(需自行注册)。

2、程序和参数名可以按个人喜好命名。项目文档应包含项目说明,写入README.MD。该说明应该包含:

a. 项目的简介及其相关的用法;
b. 文件列表及其相关说明;
c. 例程运行及其相关结果。

3、码云上传的项目要求必须通过多次提交(commit)体现各个版本更迭和运行结果截图。

版本号分别为:

v0.1 空项目
v0.2 项目完成基础功能
v0.3 项目完成扩展功能(加分项)

编写对应的单元测试。

a. 实现基本功能的测试;

b. 单元测试包含更多的测试用例。(加分项)

使用选用的IDE附带的工具进行performance test。(加分项)

交作业时需直接附上自己的码云仓库地址。

1.3. 函数介绍

(1) text_count.m函数

功能:读取给定文本文件,然后统计其中的字符数、单词数、句子数、代码行数、空行数和注释行数等各项指标,并返回这些统计结果。
输入:接受一个文本文件名作为输入参数,如:text_count('test.txt'),其中test.txt是文本文件的名称,需确保该文件位于 MATLAB 的当前工作目录或者在已添加到 MATLAB 搜索路径的目录下。
输出:返回一个包含字符数、单词数、句子数、代码行数、空行数和注释行数统计结果的数组,顺序依次为:[char_count, word_count, sentence_count, code_line_count, empty_line_count, comment_line_count]。

(2) main.m函数

功能:根据传入的参数(-c、-w、-s、-cl、-el、-clc等),调用text_count.m函数对指定文本文件进行相应指标的统计,并将结果输出。
输入:接受可变数量的输入参数,规范输入格式是一个字符串数组,其中第一个元素是统计参数(-c、-w、-s等),第二个元素是要处理的文本文件的完整路径。如:main('-c', 'test.txt')表示统计test.txt文件中的字符数。
输出:在命令行显示出相应统计指标的结果。

2. 参数说明与用法

  • -c参数:用于统计文本文件中的字符数。
  • -w参数:用于统计文本文件中的单词数。
  • -s参数:用于统计文本文件中的句子数。
  • -cl参数:用于统计文本文件中的代码行数。这里对代码行的判断是行内容不为空,并且不以%开头。
  • -el参数:用于统计文本文件中的空行数。
  • -clc参数:用于统计文本文件中的注释行数。这里将%开头的行视为注释行。

3. 例程运行及其相关结果

3.1. 例程准备

  准备了一段测试文本test.txt:一段英文文本,有类似代码格式的内容、标点符号、注释行等,可用于测试字符数、单词数、句子数的统计功能。

3.2.运行示例及结果

  1. 统计字符数
    在 MATLAB 命令行输入:main -c testtxt
    输出结果:应该是test.txt文件内容的字符数(包含空格和标点符号),得到结果263。
  2. 统计单词数
    输入:main -w test.txt
    输出结果:通过正则表达式等方式统计出test.txt文件中的单词数,比如可能得到44个单词。
  3. 统计句子数
    输入:main -s test.txt
    输出结果:以句号、问号、感叹号等作为句子结束标志,利用正则表达式分割文本得到test_file1.txt文件中的句子数,得到4句。
  4. 统计代码行数
    输入:main -cl test.txt
    输出结果:按照代码行判断条件(行内容不为空,并且不以%开头)统计test_.txt文件中的代码行数,得到2行。
  5. 统计空行数
    输入:main -el test.txt
    输出结果:统计test.txt文件中的空行数,得到0行。
  6. 统计注释行数
    输入:main -clc test_.txt
    输出结果:以%开头的行视为注释行,统计test.txt文件中的注释行数,得到2行。
    通过以上例程运行示例,可以直观地看到本项目中各个函数的使用方法以及能够实现的文本统计功能。希望这份项目文档能够帮助用户更好地理解和使用本项目。

4. 单元测试与性能测试结果

4.1.单元测试结果

  

4.2.性能测试结果

  根据自定义性能测试代码,对文本文件'test.txt'进行性能测试,测试结果如下:

这些平均执行时间数据能让我们直观了解到text_count.m函数在不同统计任务下的大致运行效率,便于比较不同功能之间的性能差异,也为进一步优化函数的性能提供了具体的参考依据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/823268.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular 19 要 来了⚡

前言 Angular 19 预计会在 11 月中旬发布,目前 (2024-10-27) 最新版本是 v19.0.0-next.11。 这次 v19 的改动可不小哦,新增了很多功能,甚至连 effect 都 breaking changes 了呢🙄 估计这回 Angular 团队又会一如既往的大吹特吹了...好期待哦🙄 虽说有新功能,但大家也不…

C语言和其他高级语言的最大区别是什么

C语言和其他高级语言的最大区别是:一、编程范式不同;二、语言复杂度不同;三、内存管理和指针操作不同;四、性能和可移植性不同。编程范式不同在于,C语言是一种过程式编程语言,侧重于问题解决的步骤和顺序,而其他高级语言则采用更高层次的编程范式。一、编程范式不同 C语…

Mybatis01

Mybatis01 简介 Mybatis实现了对jdbc的封装使得对于数据库的连接变得利于维护,需要在xml文件中进行资源配置开发,然后再mapper文件中进行代理开发,最后实现接口可以通过对Maaper 的函数调用实现对于数据库的增删改查. 环境配置 搭建web骨架在maven,的pom.xml中导入坐标,同时导入…

AvaloniaUI项目离线开发全攻略:IDE安装、模板应用与NuGet私有化部署一站式解决

1. 引言 在网络受限或完全离线的环境中开发.NET项目(本文示例为Avalonia UI项目),可能会遇到一些挑战。本文将为您提供一套完整的离线开发解决方案,包括IDE的安装、Avalonia UI模板的配置、私有化NuGet服务的部署以及NuGet包的制作和上传等。 2. IDE安装指南 Visual Studio…

.NET云原生应用实践(四):基于Keycloak的认证与授权

本章目标完成Keycloak的本地部署与配置 在Stickers RESTful API层面完成与Keycloak的集成 在Stickers RESTful API上实现认证与授权Keycloak的本地部署 Keycloak的本地部署最简单的方式就是使用Docker。可以根据官方文档构建Dockerfile,然后使用Docker Compose直接运行。由于K…

温习 SPI 机制 (Java SPI 、Spring SPI、Dubbo SPI)

SPI 全称为 Service Provider Interface,是一种服务发现机制。 SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。1…

.NET周刊【10月第3期 2024-10-20】

国内文章 我被 .NET8 JIT 的一个BUG反复折磨了半年之久(JIT tier1 finally optimizations) https://www.cnblogs.com/calvinK/p/18469889 作者分享了一次在公司中API服务器从.NET 6升级到.NET 8后遇到的JIT BUG经历。升级后一个实例在某些部署中出现AES解密明文字符丢失的问题,…

mysql弱密码爆破

mySQL弱密码靶场:/vulhub/mysql/CVE-2012-2122启动: docker-compose up -d扫描端口 nmap -Sv -Pn -T4 靶机ip看到在3306端口开启了mysql服务爆破账号密码1.使用超级弱口令检测工具(github下载)爆破出root/1234562.使用Hydra爆破 hydra -L 用户名字典 —P 密码字典 靶机IP m…

本人高分硕士论文项目:工业异常检测基准引擎

1. 架构 如图所示,IADBE(Industrial Anomaly Detection Benchmark Engine)系统由三个主要部分组成: IADBE、IADBE 服务器和 IADBE 后台。IADBE 是系统的核心,API 和 CLI 是网关。数据集、模型和指标是系统最重要的部分。模型基于开源的 Anomalib 和 YOLOv8。系统有三个主要…

CSP-S 2024 复赛游记

CSP-S 2024 游记Day -2 空白的一天。huge 不想太多天连着打模拟赛,并且想在明天安排一场,所以安排了专题。 今天是 dp 专题。 听了丁真的去做 AT 的 dp 专题 了,很晚才看 Vjudge。 效率有点低啊,这状态怎么打复赛(。 Day -1 全真模拟,换了座位。模拟赛有关。 挂了 40pts,…

现在才投简历还来得及吗?

某客热帖“现在才投互联网还有没有 HC?”,一时间引发了广泛的讨论。事情是这样的:有个小哥,其自身条件也不错,本硕 985 院校,求职意向是 Java 后端研发工程师,拿过国奖、有实习经历,各方面条件都不错。 但就是比较刚,秋招开始后只投了央国企、银行、运营商之类的工作,…

MaskGCT,AI语音克隆大模型本地部署(Windows11),基于Python3.11,TTS,文字转语音

前几天,又一款非自回归的文字转语音的AI模型:MaskGCT,开放了源码,和同样非自回归的F5-TTS模型一样,MaskGCT模型也是基于10万小时数据集Emilia训练而来的,精通中英日韩法德6种语言的跨语种合成。数据集Emilia是全球最大且最为多样的高质量多语种语音数据集之一。 本次分享…