表达式计算之四:方程的数据结构

#include "NumType.h"
#include <string>
using namespace std;
 
class equas
{
public:
     static int iEquas;   
     void set(int iPnt,nums nA);
     nums get(int iPnt);
     void display();
     friend equas operator + (equas nA,equas nB);
     friend equas operator + (equas nA,nums nB);
     friend equas operator - (equas nA,equas nB);
     friend equas operator - (equas nA,nums nB);
     friend equas operator * (equas nA,equas nB);
     friend equas operator * (equas nA,nums nB);
     friend equas operator / (equas nA,equas nB);
     friend equas operator / (equas nA,nums nB);
private:
     nums aArr[equas::iEquas+1];
};  
int equas::iEquas=1;
void equas::set(int iPnt,nums nA)
{
     aArr[iPnt]=nA;
}
nums equas::get(int iPnt)
{
     return aArr[iPnt];
}
void equas::display()
{
    int iI;
    for (iI=0;iI<=equas::iEquas;iI++)
    {
         cout<<iI<<":";
         aArr[iI].display();
         cout<<"___";
    }
}
equas operator + (equas nA,equas nB)
{
     equas nC;
     int iI;
     for(iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]+nB.aArr[iI];
     }
     return nC;
}      
equas operator + (equas nA,nums nB)
{
     equas nC;
     int iI;
     for(iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]+nB;
     }
     return nC;
}
equas operator - (equas nA,equas nB)
{
     equas nC;
     int iI;
     for(iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]-nB.aArr[iI];
     }
     return nC;
}       
equas operator - (equas nA,nums nB)
{
     equas nC;
     int iI;
     for(iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]-nB;
     }
     return nC;
}
equas operator * (equas nA,equas nB)
{
     equas nC;
     int iI,iJ=0;
     for (iI=1;iI<=equas::iEquas;iI++)
     {
          if (nA.aArr[iI].return_Up()!=0)
          {
               iJ=1;
          }
     }
     if (iJ==1)               
     {
          for (iI=0;iI<=equas::iEquas;iI++)
          {
               nC.aArr[iI]=nA.aArr[iI]*nB.aArr[0];
          }
          return nC;
     }       
     else
     {
          for (iI=0;iI<=equas::iEquas;iI++)
          {
               nC.aArr[iI]=nA.aArr[0]*nB.aArr[iI];
          }
          return nC;
     }
}     
equas operator * (equas nA,nums nB)
{
     equas nC;
     int iI;
     for (iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]*nB;
     }
     return nC;

equas operator / (equas nA,nums nB)
{
     equas nC;
     int iI;
     for (iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]/nB;
     }
     return nC;

equas operator / (equas nA,equas nB)
{
     equas nC;
     int iI;
     for (iI=0;iI<=equas::iEquas;iI++)
     {
          nC.aArr[iI]=nA.aArr[iI]/nB.aArr[0];
     }
     return nC;
}                         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值