表达式计算之四:方程的数据结构
2006-02-02 20:31
218 查看
#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;
}
#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;
}
相关文章推荐
- 数据结构习作之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (技术含量少许)
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- Java 数据结构和算法 计算表达式问题
- 数据结构实现中缀表达式到后缀表达式,再到计算出结果的代码
- [数据结构]表达式的计算与转换-C++
- 【数据结构】动态栈+括号匹配+逆波兰表达式(后缀表达式计算)
- 数据结构中用C#实现“表达式计算”
- 数据结构_2_表达式的计算
- 【数据结构】用栈实现的简单计算器(先转换为后缀表达式、可以计算带括号的)
- 二元的表达式的计算(数据结构)
- 数据结构中用C#实现"表达式计算"
- [数据结构]第二次作业:表达式的计算
- 计算表达式的值--顺序栈(数据结构第二次实验)
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (转载)
- 数据结构-------计算逆波兰表达式(后缀表达式)
- 数据结构--表达式计算
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- [转载]数据结构中用C#实现"表达式计算"
- 表达式计算之五:方程求解
- 数据结构中用栈实现表达式的计算