永发信息网

有没有c++的高手问下这题到底错在哪?怎么改

答案:3  悬赏:20  手机版
解决时间 2021-06-05 12:11

#include<iostream.h> //头文件,用到cout和cin要有。
#include<fstream.h> //头文件,用到fin和fout要有。
#include <time.h> //头文件,用到clock()时要有。
#include<math.h> // 头文件,用到数学函数时要有。
#include<stdlib.h> // 头文件,用函数malloc,realloc,free时要有。
#include<string> //头文件,用到exit()时要有.

typedef struct{
char *ch;
int length;

}hstring;

int strlength(hstring s,hstring t,hstring r)
{
return s.length;
return t.length;
return r.length;

}

int strcompare(hstring s,hstring t)
{
int i;
for(i=0;i<s.length&&i<t.length;++i)
if(s.ch[i]!=t.ch[i])
return s.ch[i]-t.ch[i];
return s.length-t.length;
}

int substring(hstring sub,hstring s, int pos ,int len,hstring t)
{
int i;
len=t.length;
if(pos<1 || pos>s.length || len<0 || len>s.length-pos+1)
return 0;
if(sub.ch)
free(sub.ch);

else{
sub.ch=(char *)malloc(len *sizeof(char));
for(i=0;i<=len-1;++i)
sub.ch[i]=s.ch[pos-1+i];
sub.length=len;
}
return 1;

}

int index(hstring s,hstring t,int pos,hstring &sub)
{
int n,m,i;
if(pos>0)
{
n=s.length;m=t.length;i=pos;
while(i<=n-m+1)
{
substring(sub,s,i,m,t);
if(strcompare(sub,t)!=0)
++i;
else return i;
}


}
return 0;
}

int strinsert(hstring &s,int pos, hstring t,hstring &sub)
{
ofstream fout("output.txt",ios::out);
int i;
index(s,t,pos,sub);
i=index(s,t,pos,sub);

if(pos<1 || pos>s.length+1)
return 0;
if(t.length)
{
if(!(s.ch=(char *)realloc(s.ch,(s.length+t.length)*sizeof(char))))
exit(0);
for(i=s.length-1;i>=pos-1;--i)
s.ch[i+t.length]=s.ch[i];
for(i=0;i<=t.length-1;++i)
s.ch[i+pos-1]=t.ch[i];
s.length+=t.length;

fout<<"the sum is:"<<s.length<<endl;
for(i=0;i<=s.length;i++)
fout<<"the string is:"<<s.ch[i]<<endl;

fout.close();

}

return 1;


}


void main()
{
ifstream fin("input.txt",ios::in); //定义fin和fout.
if(!fin)
cout<<"can't open file "<<endl;
ofstream fout("output.txt",ios::out);


int *s,*t,*r,l,m,n,h,pos,*sub;

fin>>m>>n>>h;
s=new int[m];
t=new int[n];
r=new int[h];

for(l=0;l<m;++l)
fin>>s[l];
for(l=0;l<n;++l)
fin>>t[l];
for(l=0;l<h;++l)
fin>>r[l];
strinsert(s, pos,t,sub);

fin.close();
fout.close();
}

错: error C2664: 'strinsert' : cannot convert parameter 1 from 'int *' to 'hstring &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Error executing cl.exe.

.exe - 1 error(s), 0 warning(s)

最佳答案
strinsert函数第一个参数为hstring &,而你传入的为int不对
全部回答
你的程序太多错误了 首先 int strlength(hstring s,hstring t,hstring r) { return s.length; return t.length; return r.length; } 一个函数怎么可以有这么多返回值呢? 其次 int strinsert(hstring &s,int pos, hstring t,hstring &sub) 这个函数你是这么定义的 int *s,*t,*r,l,m,n,h,pos,*sub; fin>>m>>n>>h; s=new int[m]; t=new int[n]; r=new int[h]; for(l=0;l<m;++l) fin>>s[l]; for(l=0;l<n;++l) fin>>t[l]; for(l=0;l<h;++l) fin>>r[l]; strinsert(s, pos,t,sub); 但是你传入的时候第一个参数却是int *型 编译器当然不知道你要干什么 你的程序错误太多 我也不知道该怎么改了 你还是仔细修剪一下再发上来吧

strinsert(s+'', pos,t+'',sub+'');

试一下,我觉得你传过去的数据类型不对

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
台式电脑什么样的是好用的,大概要多少钱?
温岭美食节今年几月份阿
中华民族精神兴旺发达的根本原因是?
孩子七个月感冒了老是咳嗽吃什么药
泸溪县湘西芝美家手工现烤披萨哪位知道具体地
DNF的**者什么时间开?现在有什么其它好玩的
周董今年12月的新专辑的情况。
上次问题点错!(初恋指什么)
问道帮派功臣奖励的东西能转吗
冰能吃吗?
刚才看见一网友的提问,我也一样,我都快20了
为什么空间首页的视频总是显示在服务器上找不
梁园区商丘扬帆发艺专业烫染造型机构旗舰店这
请问如何加盟玛丽艳美容养生馆
社区等级怎样升级快?
推荐资讯
怎样挑选隐形眼镜护理液???高效免揉搓的是
跑跑卡丁车好耍吗??
excel为什么我的工作簿不能重命名?
我想失意 , 请问有什么办法呐 .?
彩虹岛幸运拼图打什么怪物爆
请问这种发型需要烫发吗?
襄州区襄樊中国建设银行(襄阳支行)地址在什么
通河县哈尔滨银行24小时自助银行(通河支行)在
对于51刷图型剑圣而言,这样加点对不对?
没试过网恋想试下??
叶问2什么时候才能播放
问问圣诞找星星的活动为什么找不到了?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?