C++ 制作内容检索程序

最近心血来潮,毕竟在家闲得无聊,敲了一个检索的程序,不过写代码时挺快,debug倒是很费劲

程序实现的原理

对于一个检索程序,我们要知道用户所搜索的是什么东西,当然,这个的前提是你的内容中有相关的。

其实检索程序要注意的是用户输入数据与数据本身的联系。也就是说,在达到一个什么样的标准时,我们可以说这个内容是与用户搜索相关的,但这个是无法确定的,所以不妨把要求定低点,当然了,我是说的其他的内容。

在这里我要实现的是一个题目的搜索,所以要求低了就会出现查找有误的情况,那么就开始我的讲解

查找相似度

对于相似度的查找,我使用了的字符逐一判断,对于这种查找,代码难度较低,只需要在外部定义一个变量就行,用于记录相等的字符数量。

这个的原理类似与一个名为“文章相关性 基因相关性 比较相似性”的题目,刚刚说的这个是一个题目。其原理类似,都是使用比对后的数据和总数据量对比。

那就不妨去写一下这个程序

#include<iostream>
using namespace std;
struct node{
	string s;
	int cnnt;
}stu[100];
/*上述结构体用于存储数据,便于与输入的进行一个比对*/
void work(){//随便命名的,可以根据自己的喜好
	string tmp;
	cin>>tmp;
	for(int i=0;i<100;i++){
		if(tmp==stu[i].s){
			/* 已经检索到了*/
			//在这里,执行你想要的代码
		}else{
			for (int j = 0; j < stu[i].s.size(); j++) {
				for (int k = 0; k < tmp.size(); k += 2) {
					if ((stu[i].s[j] == a[k]) && (tmp[i].s[j + 1] == a[k + 1])) {
						stu[i].cnnt++;
						//计数,符合当前执行条件
					}
				}
			}
		}
		/*以上写的代码是关于汉字的,若是英文字符,算法类似,但是不用两个相比较了*/
	}
	bool flag=false;
	//这里判断是否符合标准
	for (int i = 0; i < 114; i++) {
	if (stu[i].cnnt >= a.size() / 2 && stu[i].cnnt != 0) {
		flag = true;//当前是符合标准的
	}
	if (flag) {
		cout << "已为您找到一下题目信息\n";
		//判断flag,有无题目信息,给一个
		int temp = 1;
		int t = 0;
		for (int i = 0; i < 114; i++) {
			if (stu[i].cnnt >= a.size() / 2 && stu[i].cnnt != 0) {
				//输出当前查找到的资源
				cout << temp << ".";
				temp++;
				cout << stu[i].s << endl;
			}
		}
	} else {
		cout << "当前数据暂未库,如有数据资源,请联系我们\n";/*找不到了!!!*/
	}
}

上述代码所需要比对的数据没有进行读入,因为数据量太大了

那么以上就是检索的全部代码了,其实就是一个暴力的写法,不过代码更注重的是可读性,也就是让大家都能看得懂,方便日后的检查。

希望大家能够关注我,谢谢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒__heng

创作不易,能否鼓励我一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值