练习下模板 输入用空格隔开就好
x3 +x3 -x4 -x5 -x3 -x3=0*x3-1*x4-1*x5
#include <iostream>
#include <iterator>
#include <vector>
#include <cstring>
using namespace std;
class merg
{
public:
merg(char *p)
{
s=new char[strlen(p)+1];
s=p;
strcpy(seps," ,\n\t");
}
void process()
{
token=strtok(s, seps );
while( token != NULL )
{
int b=0;
int c=1;
int f1=1;
for(vector<pair<string,int> >::iterator p=v.begin();p!=v.end();p++)
{
if(*token=='+')
{
token++;
f1++;
}
if(*token=='-')
{
token++;
f1=0;
}
if(!strcmp(token,(p->first).c_str()))
{
if(f1)
{
p->second++;
}
else
{
p->second--;
}
b=1;
}
}
if(!b)
{
if(f1>=1)
{
c=1;
}
if(f1==0)
{
c=-1;
}
pair<string,int> p(token,c);
v.push_back(p);
}
token = strtok( NULL, seps );
}
}
void show()
{
for(vector<pair<string,int> >::iterator p=v.begin();p!=v.end();p++)
{
cout<<p->second<<"*"<<(p->first).c_str();
if(p!=v.end()-1)
cout<<'+';
}
cout<<endl;
}
private:
char *s;
char seps[100];
char *token;
vector<pair<string,int> > v;
};
int main( void )
{
char s[1000];
gets(s);
merg m(s);
m.process();
m.show();
return 0;
}
[[it] 本帖最后由 sunkaidong 于 2008-5-9 14:32 编辑 [/it]]