80分OLE求助
  • 板块P1953 易语言
  • 楼主0375w
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/9/2 01:04
  • 上次更新2023/11/5 13:49:54
查看原帖
80分OLE求助
40039
0375w楼主2020/9/2 01:04

第一次遇见OLE,不知道是什么原因,思路是把数字提取出来替换,其他不管,代码不算特别长,恳请大佬帮忙查错。

#include<cstring>
#include<algorithm>
#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=200005;
char opt[maxn],temp1[maxn],temp2[maxn];
int main()
{
	scanf("%s",opt+1);
	int r1=0,r2=0,l1=10000,l2=10000,len1=0,len2=0,cnt=0,be=0;
	if(opt[1]=='0'||opt[1]=='1'){
		cnt=0,be=opt[1]-'0';
		scanf("%s%s",temp1+1,temp2+1);
		len1=strlen(temp1+1),len2=strlen(temp2+1);
		while(~scanf("%s",opt+1)) ++cnt;
		cnt=cnt/2+1;
	}
	else{
		len1=strlen(opt+1);
		for(int i=1;i<=len1;++i) temp1[i]=opt[i];
		len2=0;
		for(int i=1;i<=len1;++i){
			++len2;
			temp2[i]=temp1[i];
			if(temp1[i]=='.') break; 
		}
		scanf("%s",temp2+len2+1);
		len2=strlen(temp2+1);
		while(~scanf("%s",opt+1)) ++cnt;
		cnt/=2;
		for(int i=1;i<=len1;++i) 
		  if(temp1[i]>='0'&&temp1[i]<='9') be=be*10+temp1[i]-'0';
	}
	for(int i=1;i<=len1;++i)
	  if(temp1[i]>='0'&&temp1[i]<='9') l1=min(l1,i),r1=max(r1,i);
	for(int i=1;i<=len2;++i)
	  if(temp2[i]>='0'&&temp2[i]<='9') l2=min(l2,i),r2=max(r2,i);	
	for(int i=1;i<=cnt;++i){
		for(int j=1;j<l1;++j) putchar(temp1[j]);
		printf("%d",be);
		for(int j=r1+1;j<=len1;++j) putchar(temp1[j]);
		printf(" ");
		for(int j=1;j<l2;++j) putchar(temp2[j]);
		printf("%d",be);
		for(int j=r2+1;j<=len2;++j) putchar(temp2[j]);
		if(i!=cnt) printf("\n");
		++be;
	}
	return 0;
} 
2020/9/2 01:04
加载中...