请问这个问题怎么解决??

#include<iostream.h>#include<windows.h>#defineERROR0//-----------串的堆式顺序存储结构-------typ... #include<iostream.h>
#include<windows.h>
#define ERROR 0

//-----------串的堆式顺序存储结构-------

typedef struct
{
char *ch;
int length;
}HString;

//---------BF算法------------------------
int Index_BF(HString S[],HString T[],int pos)
{
int i,j;
i=pos;
j=1;

while(i<=S[0].length && j<=T[0].length)
{
if(S[i].ch==T[j].ch)
{
++i;
++j;
}
else
{
i=i-j+2;
j=1;
}
}
if(j>T[0].length)
return i-T[0].length+1;
else return ERROR;
}

void main()
{
int pos;
HString S;
HString T;
cout<<"请输入主串S:";
cin>>S.ch;
cout<<"请输入字串T:";
cin>>T.ch;
pos=Index_BF(S,T,1);
cout<<"T在F中的位置为:"<<pos<<endl;
}

错误:
:\工程\Text3.cpp(47) : error C2664: 'Index_BF' : cannot convert parameter 1 from 'HString' to 'HString []'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
执行 cl.exe 时出错.

请问怎么解决???详细一点 谢谢
展开
 我来答
zhl_xina2000
2015-10-31 · TA获得超过267个赞
知道小有建树答主
回答量:656
采纳率:0%
帮助的人:471万
展开全部
问题出在这一句:pos=Index_BF(S,T,1);
你的S和T都是HString(HString S; HString T;)而int Index_BF(HString S[],HString T[],int pos)要求的是HString数组(HString[]),所以你输出单个值是不行的,必须输入多个HString并组成数组作为参数
更多追问追答
追问
刚学 还是不懂 那应该怎么改?谢啦
追答
void main()
{
int pos;
HString S[10];
HString T[10];
for(int i=0; i>S[i].ch;
cout>T[i].ch;
}
pos=Index_BF(S,T,1);
cout<<"T在F中的位置为:"<<pos<<endl;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式