网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月05日漏签0天
c++吧 关注:631,658贴子:2,114,028
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回c++吧
>0< 加载中...

在线救助 类的封装问题 谢谢啦先!

  • 只看楼主
  • 收藏

  • 回复
  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
课设老师要求类的封装 请高手改下!
#ifndef HEAD_H
#define HEAD_H
#include<iostream>
struct  Data
{
  int coef;  //系数
  int expn;  //指数
};
struct LNode
{
  Data  data;
  LNode *next;
};
  
LNode *creatPolyn( );
LNode *addPolyn(LNode*pa,LNode*pb);
  void negativePolyn(LNode *head);
  LNode *subPolyn(LNode*pa,LNode*pb);
  void  show();
  void print(LNode *q);
#endif
  



  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include"head.h"
#include<iostream>
using namespace std;
LNode *creatPolyn( )
{
  int n;
  LNode *head,*fp,*sp;  
   head=fp=new LNode;
   cout<<"输入多项式的项数:"<<endl;
   cin>>n;
     for(int i=1;i<=n;i++)
 {
      cout<<"输入多项式第"<<i<<"项的系数和指数:"<<endl;
    sp=new LNode;
  cin>>sp->data.coef>>sp->data.expn;
  fp->next=sp;
  fp=sp;
 }
fp->next=NULL;
 return head;             //为了能在堆内存中找到多项式的位置,将此头位置返回;
}
 int  compare(double x,double y)  
{
   if(x>y)  return 1;
  else if(x==y)  return 2;
       return 3;
}
   
LNode *addPolyn(LNode*pa,LNode*pb)//求多项式的和
{
LNode *qc,*pc1,*pc;
qc=pc1=pc=new LNode;
pa=pa->next;
pb=pb->next;
int sum;
       while(pa&&pb)
 {
   
         switch(compare(pa->data.expn,pb->data.expn))
   {
case 1:pc1=new LNode;qc->next=pc1;qc=pc1;
    pc1->data.coef=pb->data.coef;pc1->data.expn=pb->data.expn;
    pb=pb->next;
      break;
case 2:sum=pa->data.coef+pb->data.coef;
   if(sum!=0)
   {
   pc1=new LNode;qc->next=pc1;qc=pc1;
   pc1->data.coef=sum;
   pc1->data.expn=pa->data.expn;
   }
    pa=pa->next;pb=pb->next;
    break;
case 3:pc1=new LNode;qc->next=pc1;qc=pc1;
 pc1->data.coef=pa->data.coef;
 pc1->data.expn=pa->data.expn;
 pa=pa->next;
 break;
   }
  }
if(pa!=NULL) qc->next=pa;
else if(pb!=NULL)qc->next=pb;
else qc->next=NULL;
return pc;
}
  
  void negativePolyn(LNode *head)
{
      LNode *sp;
       sp=head->next;
        while(sp!=NULL)   
        {
          



2025-09-05 06:43:05
广告
不感兴趣
开通SVIP免广告
  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
         sp->data.coef=-(sp->data.coef);
         sp=sp->next;
          
        }
    
}
LNode *subPolyn(LNode*pa,LNode*pb)//求多项式的差
{
LNode*qc,*pc1,*pc;
qc=pc1=pc=new LNode;
negativePolyn(pb);
pa=pa->next;
pb=pb->next;
int sum;
       while(pa&&pb)
 {
   
         switch(compare(pa->data.expn,pb->data.expn))
   {
case 1:pc1=new LNode;qc->next=pc1;qc=pc1;
    pc1->data.coef=pb->data.coef;pc1->data.expn=pb->data.expn;
    pb=pb->next;
      break;
case 2:sum=pa->data.coef+pb->data.coef;
   if(sum!=0)
   {
   pc1=new LNode;qc->next=pc1;qc=pc1;
   pc1->data.coef=sum;
   pc1->data.expn=pa->data.expn;
   }
    pa=pa->next;pb=pb->next;
    break;
case 3:pc1=new LNode;qc->next=pc1;qc=pc1;
 pc1->data.coef=pa->data.coef;
 pc1->data.expn=pa->data.expn;
 pa=pa->next;
 break;
   }
  }
if(pa!=NULL) qc->next=pa;
else if(pb!=NULL)qc->next=pb;
else qc->next=NULL;
return pc;
}
void  show()
{
        
          cout<<"**********本程序实现多项式的加法与减法************"<<endl; 
          cout<<"\t\t\t"<<"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|"<<endl                        
              <<"\t\t\t"<<"|       1.多项式创建       |"<<endl                  
              <<"\t\t\t"<<"|       2. 多项式相加      |"<<endl
              <<"\t\t\t"<<"|       3.  多项式相减     |"<<endl



  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
              <<"\t\t\t"<<"|      4. 退出             |"<<endl
              <<"\t\t\t"<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;
          cout<<"请选择:";
}
  
 
 
void print(LNode *q)
{
      LNode *p;
      p=q->next;
    while(p!=NULL)
 {
     if((p->data.coef)==1&&(p->data.expn)==1)       //系数和指数都是1
   cout<<"x";
  else if((p->data.coef)==1&&(p->data.expn)!=1)  //系数为1指数不等于1
   cout<<"x"<<"^"<<p->data.expn; 
  else if((p->data.coef)!=0&&(p->data.expn)==1)  //系数不等于0指数为1
  {
   if(p->data.coef==-1)
    cout<<"-x";
   else
   cout<<p->data.coef<<"x";
  }
  else if((p->data.coef)!=0&&(p->data.expn)==0)  //系数不等于0指数为0
   cout<<p->data.coef;
  
  else if((p->data.coef)==-1&&(p->data.expn)!=0)  //系数为-1指数不为0
   
   
    
   cout<<"-x"<<"^"<<p->data.expn;
  
 
     else if(p->data.coef==0);
  
   else 
   cout<<p->data.coef<<"x"<<"^"<<p->data.expn;  //一般情况
  if(p->next!=NULL)
  {
                 if(p->next->data.coef>0)    //系数符号控制
     cout<<"+";
  }                    
  p=p->next;
 }
 cout<<endl;
 
}


  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include"head.h"
#include<iostream>
using namespace std;
void  main()
{
            char i;
           
                LNode *s1,*s2, *s3,*s4;
                
         show();
          cin>>i; 
     
         do
   {
          switch(i)
          {
       
                   case '1': cout<<"请输入你要创建的多项式1:"<<endl;
                             s1=creatPolyn();
                               
                             print(s1);
                             cout<<"请输入你要创建的多项式2:"<<endl;
                             s2=creatPolyn();
                           
                              print(s2);
                            break;
                      
                     case '2':  
                           s3=addPolyn(s1,s2);



  • 樱枫飘泪
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
                             
                           print(s3);
                             break;
                        
                   case '3':
       
        
                       
        
         s4=subPolyn(s1,s2);
              print(s4);
                             break;
                  
                    
                       
     case '4': exit(1);
                }
    cout<<endl;
      show();
     cin>>i;
   }while(i);
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示