在第三次实验的基础上,teacher又对此提出了新的要求,实现网页版或安卓的四则运算。

 

结对开发的伙伴:

博客名:Mr.缪

姓名:缪金敏

链接:http://www.cnblogs.com/miaojinmin799/

 

详细网页四则运算要求:

1、生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在e1-e2的子表达式,那么结果大于等于0;

2、生成的题目中如果存在形式如e1/e2的子表达式,那么其结果应该是真分数。

3、每道题目中出现的运算符个数不超过3个,括号不做详细要求。

问题分析:

在第三次实验的基础上,要求把C++语言转换成java语言,即把cpp文件程序转换为java,jsp文件。但由于C和java在全局变量和栈的应用上有一定的不同,在对栈的使用中由于出栈和读取栈顶元素都为Object对象转换起来比较麻烦,所以我们在原先cpp文件中栈的应用改成了数组来实现压栈入栈。因为是网页版的所以就会使用jsp,html与java文件之间的数据交换,我们通过session,request和调用返回函数等方法来实现数据交互。

所遇困难:

1、在使用java中的栈时,出栈元素难以转换为所要类型。

2、jsp之间传递数组返回nill.

3、jsp与java之间的数据交互。

解决办法:

1、因为是顺序栈,所以直接使用数组来实现栈的所有功能

2、使用session来传递数组

3、在class文件中书写一个返回函数,在new生成对象时自动传递数组

前cpp文件:

四则运算4 WEB(结对开发)
  1 #include<iostream>
  2 #include<string>
  3 #include<sstream>
  4 #include<time.h>
  5 #include<iomanip>
  6 #include<fstream>
  7 #define MAX 100
  8 using namespace std;
  9 
 10 stringstream formula;   //当前算式
 11 string buffer[MAX];     //缓冲区数组
 12 int TopNumber;          //上限
 13 int BaseNumber;         //下限
 14 int IsMulDlvExist;      //是否有乘除
 15 int Amount;             //操作数的个数
 16 int BracketNum;         //括号个数
 17 int LBraket[2];         //左括号的位置
 18 int RBraket[2];         //右括号的位置
 19 int IsNeg;              //是否有负数
 20 int IsRem;              //是否有余数
 21 int IsBra;              //是否有括号
 22 int IsRep;              //是否重复
 23 float Result[MAX];      //正确结果数组
 24 char lastOp;            //记录上个运算符是否为除号
 25 
 26 //优先级数组
 27 char prior[7][7] = {
 28     { '>', '>', '<', '<', '<', '>', '>' },
 29     { '>', '>', '<', '<', '<', '>', '>' },
 30     { '>', '>', '>', '>', '<', '>', '>' },
 31     { '>', '>', '>', '>', '<', '>', '>' },
 32     { '<', '<', '<', '<', '<', '=', ' ' },
 33     { '>', '>', '>', '>', ' ', '>', '>' },
 34     { '<', '<', '<', '<', '<', ' ', '=' }
 35 };

相关文章:

  • 2021-10-19
  • 2022-02-24
  • 2021-12-28
  • 2021-07-22
  • 2021-08-07
  • 2021-12-26
  • 2021-09-12
猜你喜欢
  • 2021-09-21
  • 2022-01-15
  • 2021-11-25
  • 2021-06-05
  • 2021-11-05
  • 2021-09-29
  • 2021-05-24
相关资源
相似解决方案