数据结构使用出问题,求调
查看原帖
数据结构使用出问题,求调
251775
galiyuebing楼主2023/3/29 20:48
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <vector>
using namespace std;
map<string,string> m; 
map<int,string> v; 
//vector<string> v;
int n;

bool pd(char c)
{
	if((c>='A' && c<='Z') || (c>='a' && c<='z') || (c=='_') || (c>='0' && c<='9'))
		return true;
	else 
		return false;
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		int j=1;
		string g1,g2;char c;
		for(;true;++j)
		{
			cin>>v[j];
			cin.get(c);
			if(c=='\n')break;
		}
		if(v[1][0]=='#')
		{
			if(v[1][1]='d')//#define
			{
				m[v[2]]=v[3];
			}
			else//#undef
			{
				m[v[2]].clear();
			}
			printf("\n");
		}
		else
		{
			for(int k=1;k<j;++k)
			{
				if(m[v[k]].size()!=0)cout<<m[v[k]]<<" ";
				else//开始有问题 
				{
					string ss;bool b=false;int s1=0;
					while(s1<v[k].size())
					{
						ss.clear();b=false;
						for(;s1<v[k].size() && !b;++s1)
						{
							if(pd(v[k][s1]))ss[s1]=v[k][s1];
							else
							{
								if(m[ss].size()!=0)cout<<m[ss]<<v[k][s1];
								else cout<<ss<<v[k][s1];
								b=true;
							}
						}
						if(!b)cout<<v[k]<<" ";
					}
				}
			}
			//上面调好下面就好了 
			/*if(m[v[j]].size()!=0)cout<<m[v[j]]<<endl;
			else
			{
				string ss;bool b=false;int s1=0;
				while(s1<v[j].size())
				{
					ss.clear();b=false;
					for(;s1<v[j].size() && !b;++s1)
					{
						ss[s1]=v[j][s1];
						if(!pd(v[j][s1]))
						{
							if(m[ss].size()!=0)cout<<m[v[j]];
							else cout<<ss;
							b=true;
						}
					}
					if(!b)cout<<v[j]<<" ";
				}
			}
			printf("\n");*/
		}
	}
	return 0;
}

2023/3/29 20:48
加载中...