• 大小: 7KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: 运算  文件  计算  c++  

资源简介

小学生往往被要求回家后由家长出一些额外的四则运算练习以加强复习,但每天重复劳动效率低下,现请你设计一个自动出题的程序,以帮助家长解决每天的烦恼。注意:本程序不是要求人从键盘输入计算表达式然后由电脑来算,而是由电脑出题,人来算。

资源截图

代码片段和文件信息

#include
#include
#include
#include
using namespace std;
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
{
char *base;
char *top;
int stacksize;
}SqStack;  //运算符栈
typedef struct
{
double *base;
double *top;
int stacksize;
}SqStack1;   //操作数栈

//全局变量
char operateChar[4];//运算符
double  stackNum[100];     //操作数数组
char stackOpChar[100];  //操作符字符数组
int stackNumNo=0;       //操作数个数
int stackOpCharNo=0;    //运算符个数
int opType;           //操作数种类
bool error=false;
int m;

//用户输入结构
struct input
{
int no;//习题数;
int operateNo;           //操作数数目;
int operateBit;          //操作数数位;
int isFraction;          //能否为小数;
int isNegative;          //能否为负数;
int scopemax;               //允许出现的最大值;
int scopemin;               //允许出现的最小值
// char yourOperateChar[4];//可以出现的运算符;
}in;
void InitStack(SqStack &S)
{//构造一个操作符空栈S
S.base=new char[100];
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void InitStack(SqStack1 &S)
{   //构造一个操作数空栈S
S.base=new double[100];
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}

char GetTop(SqStack S)
{//若栈不空,则用e返回S的栈顶元素
    char e;
if(S.top==S.base)return -1;
e=*(S.top-1);
return e;
}
double GetTop(SqStack1 S)
{//若栈不空,则用e返回S的栈顶元素
    double e;
if(S.top==S.base)return -1;
e=*(S.top-1);
return e;
}

template
int Push(T &ST1 e)
{//插入元素e为新的栈顶元素
*S.top++=e;
return 0;
}
template
int Pop(T &ST1 &e)
{    //若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回-1;
if(S.top==S.base)return -1;
e=*--S.top;
return 0;
}

double Operate(double achar thetadouble b)
{
switch(theta)
{
case ‘+‘:return a+b;
case ‘-‘:return a-b;
case ‘*‘:return a*b;
case ‘/‘:return a/b;
}
return 0;
}
char Precede(char t1char t2)
{
if((t1==‘+‘||t1==‘-‘)&&(t2==‘*‘||t2==‘/‘))return ‘<‘;
else return ‘>‘;
}
//产生随机数
int createOperateNum(int bit)

int i=1randomNumberrandomdata;
while(bit>0)
{
i=10*i;
bit--;
}
    randomNumber = rand();//生成随机数rand() 生成的是0~32767之间的一个随机数。 
    randomdata =  (randomNumber % i); //获得不大于bit位的随机数

return randomdata;
}
//产生运算符
char createOperateChar(int i)
{
    int randomNumberrandomdata;
randomNumber = rand();
randomdata = (randomNumber % i);

return operateChar[randomdata]; 
}
//用户输入
void getInputData()
{
cout<<“请输入习题数(习题数规定至少不小于5):“< cin>>in.no;
while(in.no<5)         //如果输入题数in.no小于5,则请重新输入
{
cout<<“您的输入题数不够,请重新输入“< cin>>in.no;
}
cout<<“请输入操作数个数:“< cin>>in.operateNo;
cout<<“请输入操作数位数“< cin>>in.operateBit;
cout<<“运算中间结果是否允许为小数,1代表能,0代表不能“< cin>>in.isFraction;
if(in.isFraction==1)
{
cout<<“请输入您想保留的小数位数m(m≥0且m≤4):“< cin>>m;
}
cout<<“运算中间结果是否允许为负数,1代表能,0代表不能“< cin>>in.isNegative;
cout<<“请输入结果允许出现的最大值:“< cin>>in.scopemax;
cout<<“请输入结果允许出现的最小值:“< cin>>in.scopemin;
cout<<“请输入您想要使用的操作符并以‘#‘结束输入:“< char c[

评论

共有 条评论