64,637
社区成员
发帖
与我相关
我的任务
分享
void Get(CString a, int *AddNum, int *SubNum, int Pos[], CString StrPart[])
{
int flag = 0;
// int AddNum, SubNum;
*AddNum = a.Replace(_T("+"),_T("+"));
*SubNum = a.Replace(_T("-"),_T("-"));
// int AddPos[10];
// int SubPos[10];
int *AddPos = new int[*AddNum];
int *SubPos = new int[*SubNum];
int j = 0;
for(int i=0; i<*AddNum; i++)
{
AddPos[j] = a.Find ('+',flag);
flag = AddPos[j];
flag += 1;
j++;
}
j = 0;
flag = 0;
for(int i=0; i<*SubNum; i++)
{
SubPos[j] = a.Find ('-',flag);
flag = SubPos[j];
flag += 1;
j++;
}
// int Pos[20];
Pos = new int[*AddNum + *SubNum];
for(int i=0; i<*AddNum; i++)
{
Pos[i] = AddPos[i];
}
j=0;
for(int i=*AddNum; i<*AddNum + *SubNum; i++)
{
Pos[i] = SubPos[j];
j++;
}
for(j=0;j<*AddNum + *SubNum;j++)
{
for(int i=0;i<*AddNum + *SubNum-1-j;i++)
{
if(Pos[i]>Pos[i+1]) /* 由小到大,由大到小时改为< */
{
int t = Pos[i];
Pos[i] = Pos[i+1];
Pos[i+1] = t;
}
}
}
StrPart = new CString[*AddNum + *SubNum + 1];
if(Pos[0] == 0)
{
int i;
for(i=0;i<*AddNum + *SubNum-1;i++)
{
StrPart[i] = a.Mid(Pos[i]+1,Pos[i+1]-Pos[i]-1);
}
StrPart[i] = a.Right(a.GetLength() - Pos[i] - 1);
}
else
{
int i;
StrPart[0] = a.Left(Pos[0]);
for(i=0;i<*AddNum + *SubNum-1;i++)
{
StrPart[i+1] = a.Mid(Pos[i]+1,Pos[i+1]-Pos[i]-1);
}
StrPart[i+1] = a.Right(a.GetLength() - Pos[i] - 1);
}
}
函数调用:
int AddNum, SubNum;
AddNum = a.Replace(_T("+"),_T("+"));
SubNum = a.Replace(_T("-"),_T("-"));
int *Pos = new int[AddNum + SubNum];
CString *StrPart = new CString[AddNum + SubNum + 1];
Get(a, &AddNum, &SubNum, Pos, StrPart);
函数声明:
void Get(CString a, int *AddNum, int *SubNum, int Pos[], CString StrPart[]);
函数定义:
void Get(CString a, int *AddNum, int *SubNum, int Pos[], CString StrPart[])
{
int flag = 0;
// int AddNum, SubNum;
*AddNum = a.Replace(_T("+"),_T("+"));
*SubNum = a.Replace(_T("-"),_T("-"));
// int AddPos[10];
// int SubPos[10];
int *AddPos = new int[*AddNum];
int *SubPos = new int[*SubNum];
int j = 0;
for(int i=0; i<*AddNum; i++)
{
AddPos[j] = a.Find ('+',flag);
flag = AddPos[j];
flag += 1;
j++;
}
j = 0;
flag = 0;
for(int i=0; i<*SubNum; i++)
{
SubPos[j] = a.Find ('-',flag);
flag = SubPos[j];
flag += 1;
j++;
}
// int Pos[20];
Pos = new int[*AddNum + *SubNum];
for(int i=0; i<*AddNum; i++)
{
Pos[i] = AddPos[i];
}
j=0;
for(int i=*AddNum; i<*AddNum + *SubNum; i++)
{
Pos[i] = SubPos[j];
j++;
}
for(j=0;j<*AddNum + *SubNum;j++)
{
for(int i=0;i<*AddNum + *SubNum-1-j;i++)
{
if(Pos[i]>Pos[i+1]) /* 由小到大,由大到小时改为< */
{
int t = Pos[i];
Pos[i] = Pos[i+1];
Pos[i+1] = t;
}
}
}
StrPart = new CString[*AddNum + *SubNum + 1];
if(Pos[0] == 0)
{
int i;
for(i=0;i<*AddNum + *SubNum-1;i++)
{
StrPart[i] = a.Mid(Pos[i]+1,Pos[i+1]-Pos[i]-1);
}
StrPart[i] = a.Right(a.GetLength() - Pos[i] - 1);
}
else
{
int i;
StrPart[0] = a.Left(Pos[0]);
for(i=0;i<*AddNum + *SubNum-1;i++)
{
StrPart[i+1] = a.Mid(Pos[i]+1,Pos[i+1]-Pos[i]-1);
}
StrPart[i+1] = a.Right(a.GetLength() - Pos[i] - 1);
}
}