#include"kwic_OO.h"
spliter::spliter( string init_s)
{
words_spliter = 0;
str_in = init_s;
}
vector<string> spliter::split()
{
typedef string::size_type string_size;
string_size i = 0;
while(i !=str_in.size())
{
while(i != str_in.size() && isspace(str_in[i]))
++i;
string_size j = i;
while(j != str_in.size() && !isspace(str_in[j]))
++j;
if(i != j)
{
//将识别到的一个单词加入vector中
str_out.push_back(str_in.substr(i, j-i));
i = j;
}
}
/*置换后一共产生的字符串行数等于一个字符串中单词的个数,即vector的size
首先调用这个函数,就可以得到输入的一行字符串经过循环位移后一共产生多少行输出*/
words_spliter = str_out.size();
return str_out;
}
circularShifter::circularShifter( vector<string> init_vec, int w )
{
words_circular = w;
vec_in = init_vec;
}
string* circularShifter::circularShift()
{
//根据上一个函数(split)得到全局变量words的值动态创建一个存储所有要输出行的字符串数组
s_out = new string[words_circular];
int count_str = 0;
vector<string>::iterator it;
for(it=vec_in.begin();it!=vec_in.end(),count_str<words_circular;it++,count_str++)
{
vector<string>::iterator itt = it;//保存初始位置
vector<string>::iterator another = vec_in.begin();//用于输出it之前的元素
vector<string> v_ano;//用于保存置换后的语句
//前半部分
for(;itt!=vec_in.end();itt++)
v_ano.push_back(*itt);
//后半部分
for(;another!=it;another++)
v_ano.push_back(*another);
//全部输出
vector<string>::iterator final_print;
for(final_print=v_ano.begin();final_print!=v_ano.end();final_print++)
//cout<<*final_print<<" ";
//每一次循环位移后产生的输出行存入相应的字符串数组中
s_out[count_str] += *final_print+" ";
//去掉最后一个空格
int nlens= s_out[count_str].length();
s_out[count_str].erase(nlens-1,1);
}
/*
vector<string>::iterator first_it;
for(vector<string>::iterator first_it=vec_in.begin();first_it!=vec_in.end();first_it++)
{
//要输出的第一个字符串即原始输入的字符串,存入s[0]中
s_out[0] +=*first_it+" ";
}
//去掉最后一个空格
int nlen= s_out[0].length();
s_out[0].erase(nlen-1,1);
int k = vec_in.size();
//下面循环结束的条件
string final = vec_in[k-1];
vector<string>::iterator it = vec_in.begin();
for(;*it!=final,count_str<words_circular;count_str++)
{
vec_in.push_back(*it);
it = remove( vec_in.begin(), vec_in.end(),*it);
//it=vec_in.erase(it);
for(vector<string>::iterator iter=vec_in.begin();iter!=vec_in.end();iter++)
//每一次循环位移后产生的输出行存入相应的字符串数组中
s_out[count_str] += *iter+" ";
int nlens= s_out[count_str].length();
s_out[count_str].erase(nlens-1,1);
}
*/
//函数结束,返回指向所有输出行的字符串数组指针
return s_out;
}
sort_printer::sort_printer( string* init_str, int ws )
{
s_in = init_str;
words_sort = ws;
}
void sort_printer::sort_print()
{
int i,j;
/*简单选择排序,一共进行words次排序,每次输出待排序中最小的一个*/
for(i=0;i<words_sort;i++)
{
for(j=i+1;j<words_sort;j++)
{
//将后面比要输出位置上字符串小的字符串与要输出位置上的字符串对调
if(s_in[i]>s_in[j])
{
string str_tmp;
str_tmp = s_in[j];
s_in[j] = s_in[i];
s_in[i] = str_tmp;
}
}
cout<<s_in[i]<<endl;
}
}
int main()
{
string test;
cout<<"Input an English sentence: ";
getline(cin,test);
cout<<"after circular shifted and sorted : "<<endl;
spliter spl( test );
spl.split();
circularShifter cir( spl.str_out, spl.words_spliter );
cir.circularShift();
sort_printer sor( cir.s_out, cir.words_circular );
sor.sort_print();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
用C++面向对象思想实现的置换索引(KWIC)
共40个文件
tlog:19个
manifest:2个
pdb:2个
需积分: 47 12 下载量 34 浏览量
2015-12-14
20:34:57
上传
评论 1
收藏 7.97MB ZIP 举报
温馨提示
用C++面向对象思想实现的置换索引(KWIC),任意输入一句英文,可以将所有英文单词的循环移位后产生的句子输出。
资源推荐
资源详情
资源评论
收起资源包目录
kwic_OO.zip (40个子文件)
kwic_OO
kwic_OO
Debug
kwic_OO.lastbuildstate 61B
cl.command.1.tlog 642B
kwic_OO.log 3KB
kwic_OO.exe.embed.manifest 406B
link.10772-cvtres.write.1.tlog 2B
rc.command.1.tlog 508B
CL.read.1.tlog 12KB
kwic_OO.write.1.tlog 0B
vc100.idb 267KB
mt.read.1.tlog 298B
link-cvtres.read.1.tlog 2B
link.read.1.tlog 8KB
rc.read.1.tlog 270B
link.write.1.tlog 696B
CL.write.1.tlog 318B
link.10772-cvtres.read.1.tlog 2B
kwic_OO.exe.embed.manifest.res 472B
vc100.pdb 268KB
kwic_OO.obj 384KB
link.command.1.tlog 3KB
link.10772.read.1.tlog 2B
kwic_OO.exe.intermediate.manifest 381B
mt.write.1.tlog 298B
link.10772.write.1.tlog 2B
mt.command.1.tlog 374B
kwic_OO_manifest.rc 204B
rc.write.1.tlog 278B
link-cvtres.write.1.tlog 2B
kwic_OO.vcxproj 4KB
kwic_OO.vcxproj.user 143B
kwic_OO.cpp 4KB
kwic_OO.vcxproj.filters 1KB
kwic_OO.h 606B
kwic_OO.sdf 7.83MB
Debug
kwic_OO.pdb 1.02MB
kwic_OO.ilk 587KB
kwic_OO.exe 91KB
ipch
kwic_oo-67cc1bc4
kwic_oo-a95ec7b7.ipch 26MB
kwic_OO.suo 13KB
kwic_OO.sln 888B
共 40 条
- 1
资源评论
yfainaer
- 粉丝: 9
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功