请问这个问题怎么解决??
#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 时出错.
请问怎么解决???详细一点 谢谢 展开
#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 时出错.
请问怎么解决???详细一点 谢谢 展开
1个回答
展开全部
问题出在这一句: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并组成数组作为参数
你的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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询