当前位置: 代码迷 >> C语言 >> 求一个关于合并同类项的编程
  详细解决方案

求一个关于合并同类项的编程

热度:274   发布时间:2008-05-08 23:31:50.0
求一个关于合并同类项的编程
全并同类项的程序,谢谢
搜索更多相关的解决方案: 同类项  

----------------解决方案--------------------------------------------------------
...................


[color=white]
----------------解决方案--------------------------------------------------------
燕子杀人了...报官去了..呵呵,晚安
----------------解决方案--------------------------------------------------------
燕子加油,争取再次当上版主封杀他们。我顶你~~~~
----------------解决方案--------------------------------------------------------
为什么要封杀我?因为我跟你同名?
----------------解决方案--------------------------------------------------------
合并同类项
也就是数据结构里的多项式相加…………
----------------解决方案--------------------------------------------------------
回复 6# 的帖子
3克,又多条思路。
----------------解决方案--------------------------------------------------------
我已经写 了 一 个…………
用指针…………
数组…………
结构体………………
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
给我看看嘛!
----------------解决方案--------------------------------------------------------
练习下模板 输入用空格隔开就好
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]]
----------------解决方案--------------------------------------------------------
  相关解决方案