CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

为什么新人如此郁闷啊!编程!

楼主chllcy(搬张小板凳,听星星们的高见)2006-12-01 19:09:57 在 C/C++ / 新手乐园 提问

郁闷!  
  比如说   有两个vector     一个存指数,一个存系数  
  我只能写成这样........  
  第一个版本可以运行   ,但它不能识别   如输入   1x^1+2x^1   这种指数相同类型   它不能输出3x^1     而输出1x^1+2x^1  
  cpolynomial::cpolynomial(const   vector<double>&dvec,const   vector<int>&ivec)  
  {  
  cnode   *T;  
  vector<double>::const_iterator   it=dvec.begin();  
  vector<double>::const_iterator   it_end=dvec.end();  
  vector<int>::const_iterator   iter=ivec.begin();  
  for(;it!=it_end;++it,++iter)  
  {    
  T=new   cnode(*it,*iter);  
  _polylist.push_back(*T);  
  }  
  _polylist.sort(greater<cnode>());  
  }  
   
  第2个版本夭折......我是想利用2次循环   合并指数相同的,可是.........  
  cpolynomial::cpolynomial(const   vector<double>&dvec,const   vector<int>&ivec)  
  {  
  cnode   *T;  
  vector<double>::const_iterator   it1=dvec.begin();  
  vector<double>::const_iterator   it2=dvec.begin();it2++;  
  vector<double>::const_iterator   it_end=dvec.end();  
  vector<int>::const_iterator   iter1=ivec.begin();  
  vector<int>::const_iterator   iter2=ivec.begin();iter2++;  
  vector<int>::const_iterator   iter_end=ivec.end();  
  for(;iter1!=iter_end;++iter1,++it1)  
  for(;iter2!=iter_end;++it2,++iter2)  
      {  
      if(*iter2==*iter1){  
  (*it1)+=*it2;  
  dvec.erase(it2);  
  ivec.erase(iter2);  
      }  
      }  
  for(it1=dvec.begin(),iter1=ivec.begin();it1!=it_end;++it1,++iter1)  
  {    
  T=new   cnode(*it1,*iter1);  
  _polylist.push_back(*T);  
  }  
  _polylist.sort(greater<cnode>());  
  }  
   
   
  哪位大师帮忙解决一下.....? 问题点数:20、回复次数:6Top

1 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-12-01 19:57:56 得分 0

哪位大哥帮帮忙啊!!!~~还是我表达有问题........Top

2 楼htqx(航天奇侠)回复于 2006-12-03 23:46:17 得分 15

删除元素时,   iterator   也同时失效。  
  it2=   dvec.erase(it2);  
  iter2   =   ivec.erase(iter2);  
  Top

3 楼Bennyatt()回复于 2006-12-04 11:45:30 得分 2

如果你是新人    
  为什么用这么复杂的表达方式??  
  为什么不写的醒目一点??Top

4 楼chllcy(搬张小板凳,听星星们的高见)回复于 2006-12-04 12:31:52 得分 0

..................晕   老师要求用STL   .....我不太熟悉.....我只是想解决一下输入   1x^1+2x^1   这种指数相同类型   它不能输出3x^1     而输出1x^1+2x^1      
   
  目前的  
  cpolynomial::cpolynomial(const   vector<double>&dvec,const   vector<int>&ivec)  
  {  
  cnode   *T;  
  vector<double>::const_iterator   it=dvec.begin();  
  vector<double>::const_iterator   it_end=dvec.end();  
  vector<int>::const_iterator   iter=ivec.begin();  
  for(;it!=it_end;++it,++iter)  
  {    
  T=new   cnode(*it,*iter);//将指数和系数传递给cpolynomial的list<cnode>_polylist  
  _polylist.push_back(*T);//_polylist是cpolynomial私有的   list<cnode>_polylist;   cnode是个类,有两个私有成员 double   _coef   保存系数;   int   _expn   保存指数的;  
  }  
  _polylist.sort(greater<cnode>());//对输入的按指数降幂排序  
  }  
   
  就是我想解决如果vector里出现指数相同的两项或几项,输出结果应该是一项,而我这个却是输入有几项指数相同的   输出几项.....Top

5 楼ReverseEngineering(★给我一杯壮阳水☆换我一夜不下垂★男人阳萎不是罪☆)回复于 2006-12-25 20:53:19 得分 2

太复杂了!Top

6 楼andyhuang_one(Clownfish Nemo)回复于 2006-12-26 09:21:08 得分 1

ding~~Top

相关问题

关键词

得分解答快速导航

  • 帖主:chllcy
  • htqx
  • Bennyatt
  • ReverseEngineering
  • andyhuang_one

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo