DycbGhost 2020-12-03 00:01 采纳率: 100%
浏览 36
已采纳

c++中,求这两个串最大公共子串(求解为何报错)

//cpp
#include<iostream>
using namespace std;
#include"acb.h"
int main()
{
	sqstr s1,t1,str;
	input(s1,"adssdaxczefrcbxcvxqwgcxx");
	input(t1,"sadxccxassdyii");
	cout<<"s1:";     output(s1);
	cout<<"t1:";     output(t1);
	str=maxstr(s1,t1);
	cout<<"str:";
	output(str);
	cout<<str.length<<endl;
	return 0;
}


//acb.h
#define MaxSize 100     //串中的最多字符个数
typedef struct
{
	char data[MaxSize];
	int length;
}sqstr;
 


void input(sqstr &s, char str[])  //串的赋值运算
{
	int i=0;
	while (str[i]!='\0')
	{
		s.data[i]=str[i];
		i++;
	}
	s.length=i;
}



sqstr maxstr(sqstr s,sqstr t)
{
	sqstr str;
	int midx=0,mlen=0,tlen,i=0,j,k;
	while (i<s.length)        //用i扫描串s
	{
		j=0;                  //用j扫描串t
		while (j<t.length)
		{
			if(s.data[i]==t.data[j])
			{
				tlen=1;
				for (k=1;i+k<s.length && j+k<t.length && s.data[i+k]==t.data[j+k];k++)
				{
					tlen++;
				}
				if (tlen>mlen)          //将较大长度付给midx和mlen
				{
					midx=i;          //记录当前相同字符串的下标
					mlen=tlen;       //记录当前相同字符串的长度
				}
			j=j+1;
			}
			else j++;
		}
		i++;                                // 继续扫描s中第i字符之后的字符
	}
	for (i=0;i<mlen;i++)                    //将最大公共子串复制到str中
	{
		str.data[i]=s.data[midx+i];
	}
	str.length=mlen;
	return str;                               //返回最大公共子串



void output(sqstr s)  //串的输出运算
{
	int i;
	for(i=0;i<s.length;i++)
		cout<<s.data[i];
	cout<<endl;
}





//--------------------Configuration: 1125 - Win32 Debug--------------------
Compiling...
1125.cpp
C:\Users\51207\Desktop\vC\11\1125.cpp(5) : error C2601: 'main' : local function definitions are illegal
C:\Users\51207\Desktop\vC\11\1125.cpp(17) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

1125.obj - 1 error(s), 0 warning(s)

  • 写回答

2条回答 默认 最新

  • qq_25376897 2020-12-03 09:07
    关注

    maxstr 最后少了个} 

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同