自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)

1. 约分分数

1.1 保留质数

1 /**
2      * 将数值放入到fraction数组中
3      * @param fen 简要放的 int类型数值
4      */
5     public void fenshu(int fen) {
6         fraction[i++] = fen;
7     }

1.2  定义int类型数组

1 /**
2      * 获得int 类型的数组,fraction对象
3      */
4     public void getFraction() {
5         fraction = new int[nums];
6     }

1.3 获取质数数量

 1 /**
 2      * 获取num有多少个质数相乘的质数的数目,质数可相同
 3      * @param num 任意的int类型的数值
 4      */
 5     public void primeNumber(int num) {
 6         if (num == 1) {
 7             nums++;
 8             System.out.println("num为 " + num);
 9         } else {
10             // 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
11             if (num % a == 0) {
12                 nums++;
13                 int d = num / a;
14                 primeNumber(d);
15             } else {
16                 if (num % b == 0) {
17                     nums++;
18                     int d = num / b;
19                     primeNumber(d);
20                 } else {
21                     b = b + 2;
22                     primeNumber(num);
23                 }
24             }
25         }
26     }

1.4 将数值分解成质数(质数可以相同)

 1 /**
 2      * 将值分解成最小质数和集
 3      * @param num 将要分解的 int类型的数值
 4      */
 5     public void prime(int num) {
 6         if (num == 1) {
 7             System.out.println("num为 " + num);
 8         } else {
 9             // 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
10             if (num % a == 0) {
11                 fenshu(a);
12                 int d = num / a;
13                 System.out.println("a为 " + a);
14                 System.out.println("num为 " + d);
15                 prime(d);
16             } else {
17                 if (num % c == 0) {
18                     fenshu(c);
19                     int d = num / c;
20                     System.out.println("c为 " + c);
21                     System.out.println("num为 " + d);
22                     prime(d);
23                 } else {
24                     c = c + 2;
25                     System.out.println("c更改为 " + c);
26                     System.out.println("num不变依旧为 " + num);
27                     prime(num);
28                 }
29             }
30         }
31     }

1.5 将分母和分子进行约分成最简质数

 1 /**
 2      * 将两个数组进行比较,如数组内有相同的数据,将其转换为1
 3      * @param a 传递的第一个数组a
 4      * @param b 传递的第二个数组b
 5      */
 6     public static void compareTwo(int[] a, int[] b) {
 7         int alength = a.length;
 8         int blength = b.length;
 9         if (alength >= blength) {
10             for (int k = 0; k < blength; k++) {
11                 for (int m = 0; m < alength; m++) {
12                     if (a[m] == b[k]) {
13                         a[m] = 1;
14                         b[k] = 1;
15                         break;
16                     }
17                 }
18             }
19         } else {
20             for (int k = 0; k < alength; k++) {
21                 for (int m = 0; m < blength; m++) {
22                     if (a[k] == b[m]) {
23                         a[k] = 1;
24                         b[m] = 1;
25                         break;
26                     }
27                 }
28             }
29     }
30     }

1.6 将分子和分母的质数分别相乘得到最简分子和分母

 1 /**
 2      *将数组内的所有元素进行相乘
 3      * @param a 数组a
 4      * @return
 5      */
 6     public static int product(int[] a){
 7         int product=1;
 8         for(int s=0;s<a.length-1;s++){
 9             product=product*a[s];
10             a[s]=product;
11         }
12         return product;
13     }

1.7 根据用户的条件生成分子分母

 1 /**
 2      *  获取随机生成一个包含分子和分母,且分子分母都为质数的数组。
 3      * @param num1  分子最小值
 4      * @param num2  分子最大值
 5      * @param num3  分母最小值
 6      * @param num4  分母最大值
 7      * @return 返回一个包含分子和分母的数组
 8      */
 9     public static int[] fractions(int num1,int num2,int num3,int num4){
10         int[] fenshu=new int[2];
11         int first = generate(num1, num2);
12         int secound = generate(num3, num4);
13         count3Bean cBean=new count3Bean();
14         cBean.primeNumber(first);
15         cBean.getFraction();
16         cBean.prime(first);
17         int[] a=cBean.fraction;
18         count3Bean cBean2=new count3Bean();
19         cBean2.primeNumber(secound);
20         cBean2.getFraction();
21         cBean2.prime(secound);
22         int[] b=cBean2.fraction;
23         compareTwo(a, b);
24         int fenzi=product(a);
25         int fenmu=product(b);
26         fenshu[0]=fenzi;
27         fenshu[1]=fenmu;
28         return fenshu;
29     }

1.8 将分子分母进行约分

 1 /**
 2      * 将分数处理为不能再约分的数
 3      * @param num1  分子
 4      * @param num2  分母
 5      * @return int类型的数组包含分子和分母
 6      */
 7
 8     public static int[] fractions2(int num1,int num2){
 9         int[] fenshu=new int[2];
10         count3Bean cBean=new count3Bean();
11         cBean.primeNumber(num1);
12         cBean.getFraction();
13         cBean.prime(num1);
14         int[] a=cBean.fraction;
15         count3Bean cBean2=new count3Bean();
16         cBean2.primeNumber(num2);
17         cBean2.getFraction();
18         cBean2.prime(num2);
19         int[] b=cBean2.fraction;
20         compareTwo(a, b);
21         int fenzi=product(a);
22         int fenmu=product(b);
23         fenshu[0]=fenzi;
24         fenshu[1]=fenmu;
25         return fenshu;
26     }

2. action 类

 1 public class fenshu {
 2
 3     private String fenzixiao;
 4     private String fenzida;
 5     private String fenmuxiao;
 6     private String fenmuda;
 7     private String number;
 8     .......
 9     //此处省略get和set方法
10     public String execute(){
11         ActionContext actioncontext = ActionContext.getContext();
12         Map<String, Object> session = actioncontext.getSession();
13         List<Four> fours=count3.getFourList(Integer.parseInt(number), Integer.parseInt(fenzixiao), Integer.parseInt(fenzida), Integer.parseInt(fenmuxiao), Integer.parseInt(fenmuda));
14         session.put("fours", fours);
15         return "fenshusuccess";
16     }
17
18 }

3. 运行结果图

3.1 初始界面

3.2 用户填数据

3.3 生成题目界面(如在a/b+c/d=e中a/b和c/d都为分数)

3.4 用户填写答案

3.5 判断答案正确页面(判断代码在之后)

时间: 2024-12-20 23:34:50

自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)的相关文章

Makefile 7——自动生成依赖关系 三颗星

后面会介绍gcc获得源文件依赖的方法,gcc这个功能就是为make而存在的.我们采用gcc的-MM选项结合sed命令.使用sed进行替换的目的是为了在目标名前加上"objs/"前缀.gcc的-E选项,预处理.在生成依赖关系时,其实并不需要gcc编译源文件,只要预处理就可以获得依赖关系了.通过-E选项,可以避免生成依赖关系时gcc发出警告,以及提高依赖关系的生成效率. 现在,已经找到自动生成依赖关系的方法了,那么如何将其整合到我们complicated项目的Makefile中呢?自动生成

Makefile学习7————自动生成依赖关系 三颗星

后面会介绍gcc获得源文件依赖的方法,gcc这个功能就是为make而存在的.我们采用gcc的-MM选项结合sed命令.使用sed进行替换的目的是为了在目标名前加上"objs/"前缀.gcc的-E选项,预处理.在生成依赖关系时,其实并不需要gcc编译源文件,只要预处理就可以获得依赖关系了.通过-E选项,可以避免生成依赖关系时gcc发出警告,以及提高依赖关系的生成效率. 现在,已经找到自动生成依赖关系的方法了,那么如何将其整合到我们complicated项目的Makefile中呢?自动生成

自动生成数学题型(框架Struts2)

1. 加减乘除 1.1 随机生成制定范围的整数 1 /** 2 * 随机产生一个被限定范围的整数 3 * 4 * @param num1 5 * 定义起始范围 num1 6 * @param num2 7 * 定义终止范围 num2 8 * @return 返回一个 num1 到num2 之间的随机整数数值,且num1<num2 9 * 10 */ 11 12 public static int generate(int num1, int num2) { 13 boolean i = num1

[goa]golang微服务框架学习(二)-- 代码自动生成

之前用过go语言的反射来做一些代码生成,参考这篇. 但是这种方式,入侵太强,需要执行对应的申明调用, 所以对GOA框架的自动生成非常感兴趣,于是仔细研究了一下,发现用的比较巧妙, 这里先卖个关子,先看看生成的代码目录结构. 这里使用adder的desgin文件来生成: package design import ( . "github.com/goadesign/goa/design" . "github.com/goadesign/goa/design/apidsl&quo

转:Swagger2自动生成接口文档和Mock模拟数据

转自:https://www.cnblogs.com/vipstone/p/9841716.html 一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二.返回数据操作难:数据返回不对或者不够怎么办?怎么才能灵活的操作数据? 这是很多公司前后端分离之后带来的困扰,那怎么来解决这些问题? 问题一的一般解决方案:后端团队共同维护一个在线文档,每次改接口再

[转]JavaScript自动生成博文目录导航

转自:http://www.cnblogs.com/xdp-gacl/p/3718879.html 我们在写博客的时候,如果博文里面有目录,会给人结构清晰.一种一目了然的感觉,看目录就知道这篇博文要讲解的内容,并且点击目录标题就可以跳转到具体的内容,这样园友们在看博客的时候就可以很方便地浏览自己感兴趣的内容,但是遗憾的是博客园不支持博文目录的生成,好像也有园友给博客园提建议,希望能够像CSDN那样能够自动生成博文目录,但是不知道是什么原因,博客园一直都没有把这个功能加上去,既然没有,那我就自己做

写个js小工具自动生成博文目录

我们在写博客的时候,如果博文里面有目录,会给人结构清晰.一种一目了然的感觉,看目录就知道这篇博文要讲解的内容,并且点击目录标题就可以跳转到具体的内容,这样园友们在看博客的时候就可以很方便地浏览自己感兴趣的内容,但是遗憾的是博客园不支持博文目录的生成,好像也有园友给博客园提建议,希望能够像CSDN那样能够自动生成博文目录,但是不知道是什么原因,博客园一直都没有把这个功能加上去,既然没有,那我就自己做吧,研究了2天,总算是按照自己的设想做出来了,最终效果如下: 下面来介绍一下这个小工具的实现. 一.

JavaScript自动生成博文目录导航

我们在写博客的时候,如果博文里面有目录,会给人结构清晰.一种一目了然的感觉,看目录就知道这篇博文要讲解的内容,并且点击目录标题就可以跳转到具体的内容,这样园友们在看博客的时候就可以很方便地浏览自己感兴趣的内容,但是遗憾的是博客园不支持博文目录的生成,好像也有园友给博客园提建议,希望能够像CSDN那样能够自动生成博文目录,但是不知道是什么原因,博客园一直都没有把这个功能加上去,既然没有,那我就自己做吧,研究了2天,总算是按照自己的设想做出来了,最终效果如下: 下面来介绍一下这个小工具的实现. 一.

C++解析头文件-Qt自动生成信号声明

目录 一.瞎白话 二.背景 三.思路分析 四.代码讲解 1.类图 2.内存结构声明 3.QtHeaderDescription 4.私有函数讲解 五.分析结果 六.下载 一.瞎白话 时间过的ZTMK,距离上一篇文章已经小半年过去了.为了安家.装修和结婚,搞得自己焦头烂额,这不是也正好赶上过年,一直没有时间写篇文章,最近终于慢慢回归正轨,所以决定写下这一篇文章,记录工作中的一些经验和内容.对于写文章这件事,我是这么认为的:一个是回顾自己的工作内容:另一方面也是为了能让有同样需求的同学用于借鉴.同时