改变你对文本生成程序的误解!用C++标准库,MinGW情况下,写一个文本生成器(一种AI)

声明:我这个不是那种“文本生成器”

我之前见过那种“自动写作文”的程序,无非就是这样的文章:

在这里插入图片描述

文章写的只有主题,没有内容

我曾多次向我的朋友提问他们看没看过那种AI写作的代码,而给我的回复很简单:你弄那玩楞干哈?装*?那玩楞我见过,写的文章空有其表,没有其实;你别在上面浪费时间!咱学的是C++,写不出来真正的AI !

我起先认为他们错了,因为当时我在脑子里已经有了一个AI的构思,然后我到处查资料,却发现,C++标准库貌似确实无法支撑一个AI正常地诞生,那…我用第三方库可以吗?

貌似不太可行,我用的是MinGW编译器,而目前的硬盘空间不足以支持我安装VSC++

在这里插入图片描述
在这里插入图片描述

难道,我要就此放弃了吗?

不!

第三方库也是人写出来的呀,我可以自己手搓啊!

然后,我就开始了编写

首先,我寻思这能够跟GPT媲美的AI我肯定是写不出来

那可以退而求其次,做一个文本生成器呀

其次,我想这AI开发出来之后也不一定能用,——没有数据库

我首先想到的是:“装一个数据库”

but,我当时貌似忘记了我MinGW的事情

然后,我想:数据库也是人写的,我没法跟人家写的一样好,照葫芦画瓢总该会吧?

然后我就着手进入这个项目了

我用了3个库文件,分别是:

  1. scentences_templete.h
  2. word_classes.h
  3. word_read.h

我并没有写主程序,我只是把库文件写出来了,大家一读就知道怎么用了

现在,到了喜闻乐见的开源时间

word_classes.h

#include<iostream>
#include<cstring>
#include<map>#define __REAL__ 1
#define __XI__ 2
#define __COUNTABLE__ 3
#define __UNCOUNTABLE__ 4
#define __SIZE_BIG__ 5
#define __SIZE_SMALL__ 6
#define __TIME_MONTH__ 7
#define __TIME_DAY__ 8
#define __TIME_SPECIAL_DAY__ 9
#define __TIME_CLEAR_TIME__ 10
#define __OBJECT_HUMAN__ 11
#define __OBJECT_HUMAN_THING__ 13
#define __OBJECT_THING__ 12
#define __commendatory__ 13
#define __derogatory__ 14
#define __medium__ 15
#define __TYPE_1__ 15
#define __TYPE_2__ 16
#define __TYPE_3__ 17
#define __TYPE_4__ 28
#define __LONELY__ 18
#define __PL_ 19
#define __WHAT_WHAT__ 20
#define __WHAT_WHO__ 21
#define __WHAT_HOW__ 22
#define __WHAT_WHICH__ 23
#define __WHAT_HOWMUCH__ 24
#define __WHAT_HOWLONG__ 25
#define __WHAT_WHATTIME__ 26
#define __WHAT_WHY__ 27
#define __writer__ "YZX,CSDN-蒟蒻&大佬"
using namespace std;class V;
class N;
class PL;
class TM;
class ADJ;
class ADV;
class PRON;
class PREP;
class WORDS;class V{public:string shap;int type;//实义/系动词string TPSF;//三单string ED;//过去string ING;//进行string DONE;//过去分词
};
class N{public:string shap;string pl;//复数int C_UC;//是否可数
};
class PL{//地点public:string shap;int _size_type;
};
class TM{//时间public:string shap;int time_type;
};
class ADJ{public:string shap;int object;int YN_commendatory;//褒贬
};
class ADV{public:
//		ADJ*adj;//对应的形容词***指针问题无法解决string shap;
};
class PRON{public:string Main;//主格string Accusative;//宾格string n_Pos_pron;//名词性物主代词string adj_Pos_pron;//形容词性物主代词int type;//第几人称bool num;//单数复数
};
class PREP{//介词public:string shap;int _size_type;//所形容地点的种类int time_type;//所形容时间的种类
};
class CON{//连词public:string shap;
};
class WORDS{public:string WRITER="YZX,CSDN-蒟蒻&大佬";int adj_num;int adv_num;int verb_num;int nouns_num;int pls_num;int tm_num;int pron_num;int prep_num;int what_num;int con_num;string VERBS[1000];//map<string,V>verbs;//string NOUNS[1000];//map<string,N>nouns;//string PLS[1000];//map<string,PL>pls;//string TMS[1000];//map<string,TM>times;//string ADJS[1000];//map<string,ADJ>adjs;//string ADVS[1000];//map<string,ADV>advs;//string PRONS[100];//map<string,PRON>prons;//string PREPS[1000];//map<string,PREP>preps;//string WHATS[100];//string CONS[100];//
};

scentences_templete.h

#include"word_classes.h"
#include<time.h>
#include<random>
#define __SCENTENCES_1__ 1
#define __SCENTENCES_2__ 2
#define __SCENTENCES_3__ 3
#define __STM_ED__ 1
#define __STM_WILL__ 1
#define __STM_NOW__ 2
#define __STM_ING__ 3
#define NUM 9
using namespace std;
random_device rnd;
mt19937 generator(rnd());
string templates(WORDS word){string ret;PRON subject;int subject_type=rand()%5+1;if(subject_type==1){subject_type=__TYPE_1__;if(rand()%2==1){subject=word.prons["I"];}else{subject=word.prons["we"];}}else if(subject_type==2

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

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

相关文章

Java并发04之线程同步机制

文章目录 1 线程安全1.1 线程安全的变量1.2 Spring Bean1.3 如果保证线程安全 2 synchronized关键字2.1 Java对象头2.1.1 对象组成部分2.1.2 锁类型2.1.3 锁对象 2.2 synchronized底层实现2.2.1 无锁状态2.2.2 偏向锁状态2.2.3 轻量级锁状态2.2.4 重量级锁2.2.5 锁类型总结2.2.…

windows USB 设备驱动开发-编写 UCSI 客户端驱动程序

编写 UCSI 客户端驱动程序 USB Type-C 连接or 系统软件接口&#xff08;UCSI&#xff09;驱动程序充当带有嵌入式控制器&#xff08;EC&#xff09;的 USB Type-C 系统的控制器驱动程序。 如果实现平台策略管理器&#xff08;PPM&#xff09;的系统&#xff0c;如 UCSI 规范中…

国产化低功耗HDMI转VGA方案,大量出货产品,广泛应用在显示器以及广告机产品

芯片描述&#xff1a; 兼具高性能和低成本效益的优点&#xff0c;是一款可以将高清视频 HDMI1.4 数字信号转换成 VGA 模拟信号输出的芯片。不需要提供外部电源&#xff0c;ICNM7301 就可以在正常模式下使用&#xff1b;ICNM7301 广 泛适用于各种市场系统和显示应用体系&#x…

LabVIEW异步和同步通信详细分析及比较

1. 基本原理 异步通信&#xff1a; 原理&#xff1a;异步通信&#xff08;Asynchronous Communication&#xff09;是一种数据传输方式&#xff0c;其中数据发送和接收操作在独立的时间进行&#xff0c;不需要在特定时刻对齐。发送方在任何时刻可以发送数据&#xff0c;而接收…

2024年广东省安全员B证第四批(项目负责人)证模拟考试题库及广东省安全员B证第四批(项目负责人)理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年广东省安全员B证第四批&#xff08;项目负责人&#xff09;证模拟考试题库及广东省安全员B证第四批&#xff08;项目负责人&#xff09;理论考试试题是由安全生产模拟考试一点通提供&#xff0c;广东省安全员B证…

手持式气象站:便携科技,掌握微观气象的利器

手持式气象站&#xff0c;顾名思义&#xff0c;是一种可以随身携带的气象监测设备。它小巧轻便&#xff0c;通常配备有温度、湿度、风速、风向、气压等多种传感器&#xff0c;能够实时测量并显示各种气象参数。不仅如此&#xff0c;它还具有数据存储、数据传输、远程控制等多种…

kafka开启kerberos和ACL

作者&#xff1a;恩慈 一、部署kafka-KB包 1&#xff0e;上传软件包 依次点击 部署中心----部署组件----上传软件包 选择需要升级的kafka版本并点击确定 2&#xff0e;部署kafka 依次点击部署中心----部署组件----物理/虚拟机部署----选择集群----下一步 选择手动部署-…

MongoDB自学笔记(四)

一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…

学生信息管理系统-可视化-科目管理CRUD代码生成器

学生管理系统中的科目管理是一个重要的组成部分&#xff0c;它负责维护和管理学校中所有的教学科目信息。 可视化快速界面生成CRUD界面&#xff0c;API通过代码生成器生成器生成。 新增数据库表 拷贝demo_table修改为clazz_kemu表 修改表结构 其中包括一个自增ID字段&#x…

在虚拟机 CentOS7 环境下安装 MySQL5.7 数据库

配置目标 在虚拟机的 Linux CentOS7 环境下安装 MySQL5.7 版数据库&#xff0c;并能从宿主机 Windows 系统连接该数据库&#xff08;默认端口&#xff1a;3306&#xff09;。 1. 准备工作 WMware 虚拟机&#xff1a;VMware Workstation 16 ProCentOS7 镜像&#xff1a;CentO…

Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别

目录 引言&#xff1a; 正文&#xff1a; 一、Serial GC工作原理 年轻代垃圾回收&#xff08;Minor GC&#xff09;&#xff1a; 老年代垃圾回收&#xff08;Major GC或Full GC&#xff09;&#xff1a; 二、年轻代和老年代的区别 年轻代&#xff08;Young Generation&a…

redis其他类型和配置文件

很多博客只讲了五大基本类型&#xff0c;确实&#xff0c;是最常用的&#xff0c;而且百分之九十的程序员对于Redis只限于了解String这种最常用的。但是我个人认为&#xff0c;既然Redis官方提供了其他的数据类型&#xff0c;肯定是有相应的考量的&#xff0c;在某些特殊的业务…

【C++】——new和delete

文章目录 热身试题C中的内存管理new与delete对于内置类型的操作new与delete对于自定义类型的操作 malloc/free和new/delete的区别 热身试题 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3…

嵌入式物联网在教育行业的应用——案例分析

作者主页: 知孤云出岫 嵌入式物联网在教育行业的应用——案例分析 目录 作者主页:嵌入式物联网在教育行业的应用——案例分析一、引言二、智能教室&#xff1a;环境监测系统1. 硬件需求2. 电路连接3. 代码实现 三、个性化学习&#xff1a;智能学习平台1. 数据处理与分析2. 代…

Flutter中GetX的用法(超详细使用指南之路由依赖管理篇)

目录 1.前言 2.GetX 依赖管理概述 1.GetX 依赖管理的基本概念 2.与其他依赖管理工具的比较 3. 基础依赖注入 1.Get.put 2.Get.lazyPut 3.Get.putAsync 4.高级依赖注入 1.使用Get.create 2.依赖生命周期管理 5. 参考资料 1.前言 今天这篇博客主要介绍Getx的三大功能…

ESP8266模块(2)

实例1 查看附近的WiFi 步骤1&#xff1a;进入AT指令模式 使用USB转串口适配器将ESP8266模块连接到电脑。打开串口终端软件&#xff0c;并设置正确的串口和波特率&#xff08;通常为115200&#xff09;。输入以下命令并按回车确认&#xff1a; AT如果模块响应OK&#xff0c;…

R语言包AMORE安装报错问题以及RStudio与Rtools环境配置

在使用R语言进行AMORE安装时会遇到报错,这时候需要采用解决办法: AMORE包安装,需要离线官网下载安装包: Index of /src/contrib/Archive/AMORE (r-project.org)https://cran.r-project.org/src/contrib/Archive/AMORE/ 一、出现的问题 最近开始学习R语言,安装了最新版…

Window中 Redis下载安装

Redis7.2.3连接&#xff1a; 我用夸克网盘分享了「redis-windows-7.2.3.zip」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/4dfb0497707a 在安…

义务外贸wordpress独立站主题

健身器材wordpress网站模板 跑步机、椭圆机、划船机、动感单车、健身车、深蹲架、龙门架、健身器材wordpress网站模板。 https://www.jianzhanpress.com/?p4251 农业机械wordpress网站模板 植保机械、畜牧养殖机械、农机配件、土壤耕整机械、农业机械wordpress网站模板。 …

WebRTC音视频-前言介绍

目录 效果预期 1&#xff1a;WebRTC相关简介 1.1&#xff1a;WebRTC和RTC 1.2&#xff1a;WebRTC前景和应用 2&#xff1a;WebRTC通话原理 2.1&#xff1a;媒体协商 2.2&#xff1a;网络协商 2.3&#xff1a;信令服务器 效果预期 1&#xff1a;WebRTC相关简介 1.1&…