第二次结对编程—四则运算自动生成程序

一、题目要求

我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:

  • 能够自动生成四则运算练习题
  • 可以定制题目数量
  • 用户可以选择运算符
  • 用户设置最大数(如十以内、百以内等)
  • 用户选择是否有括号、是否有小数
  • 用户选择输出方式(如输出到文件、打印机等)
  • 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

二、任务分配

驾驶员:王旭
领航员:张昊辰
驾驶员负责写代码,浏览文件,还有基础实现方法。
领航员则着眼更长远的考虑并且检查错误。进行代码测试和检查错误。

三、代码分析

代码一共分为三个主要模块:
Subject_Manu主要实现程序主菜单操作的实现;
Subject_Output_Screen主要实现四则运算式的生成;
Evaluate主要用于实现四则运算式的计算功能。
代码地址:[点我]
主菜单的实现

void Subject_Manu()
{
    printf("本程序中输入“1”为是,“0”为否\n\n");
    printf("请输入所生成题的数目:\n");
    scanf("%d",&problem_num);
    printf("请输入运算符号:(“0”为加减运算,“1”为乘除运算,“2”为混合运算)\n");
    scanf("%d",&problem_operate);
    printf("请输入所生成数的范围:\n");
    printf("下界:");
    scanf("%d",&number_min);
    printf("上界:");
    scanf("%d",&number_max);
    printf("请输入是否包含小数:(“1”or“0”)\n");
    scanf("%d",&if_decimal);
    printf("请输入是否包含小括号:(“1”or“0”)\n");
    scanf("%d",&if_bracket);
    printf("请输入是否输入到文件:(“1”or“0”)\n");
    scanf("%d",&if_file);
    Subject_Control();
}

四则运式的生成

void Subject_Output_Screen()
{
    printf("题目列表:\n");
    for (int i = 0; i < problem_num; ++i) {
        int id = 0;
        int num;
        int num_opera;
        int N = rand() % 4 + 2;
        bool f = true, flag = true;
        double number;
        printf("(%d)", i + 1);
        if (if_file) {
            fprintf(file, "(%d)  ", i + 1);
        }
        for (int j = 0; j < N; ++j) {
            if (rand() % 2 && N > 2 && flag && if_bracket) {
                printf("(");
                if (if_file) fprintf(file, "(");
                flag = false;
                id = j;
                //str += "(";
            }
            num = (rand() % abs(number_max - number_min)) + number_min;
            number = num + (double)(rand() % 100) / 100;
            num_opera = rand() % problem_operate;
            if (back_operate == 2) {
                num_opera += 2;
            }
            //不是小数
            if (!if_decimal) {
                //str += to_string(num);
                printf("%d", num);
            }
            //是小数
            else {
                //str += to_string(number);
                printf("%.2f", number);
            }
            //输出文件
            if (if_file) {
                if (!if_decimal) {
                    fprintf(file, "%d", num);
                }
                else {
                    fprintf(file, "%.2f", number);
                }
            }
            if (id != j && rand() % 2 && !flag && f) {
                printf(")");
                if (if_file) fprintf(file, ")");
                f = false;
                //str += ")";
            }
            //str += subject_operator[num_opera];
            printf("%s", subject_operator[num_opera]);
            if (if_file) {
                fprintf(file, "%s", subject_operator[num_opera]);
            }
        }

        num = (rand() % (number_max - number_min)) + number_min;
        number = num + (double)(rand() % 100) / 100;

        if (!if_decimal) {
            //str += to_string(num);
            printf("%d", num);
            if (if_file) {
                fprintf(file, "%d", num);
            }
        }
        else {
            //str += to_string(number);
            printf("%.2f", number);
            if (if_file) {
                fprintf(file, "%.2f", number);
            }
        }
        if (f && !flag) {
            printf(")");
            if (if_file)fprintf(file, ")");
            //str += ")";
        }
        printf("=\n");
        if (if_file) {
            fprintf(file, "=\n");
        }
    }
    if (if_file) {
        printf("\nquestion.txt文件生成成功啦!\n\n");
    }
    fclose(file);
}

四、运行结果

选择的条件是带括号和小数的四则混合运算,并生成文件,下面是代码运行结果图:

图形界面运行结果图:

所生成文件的结果图:

五、总结

对队友评价

??这次我们这个项目的的领航员是张昊辰同学。在选择完作业的题目时,我们对这次作业进行了任务和角色的分配,我是驾驶员,他是领航员。之后我们一起设计了程序的思路,部分功能的实现。他在这些设计工作中起到了重要的作用,拓宽了我的编程思路,使得代码更加完善。在我编程中,张昊辰同学能够对我进行很好的监督并给予帮助,遇到问题时,能够和我讨论出现的问题,使得我们工作效率有了提高。在我完成编程工作后,他也进行结果的检查,认真的进行了单元测试。

对自己总结

??总体上,这次结对编程把作业要求的基本功能都实现了,并用MFC实现了简单的图形化界面,但是由于自己和队友之前没有接触过GUI,由于时间分配等问题导致没能把图形界面实现的更加完美。在这次结对编程中我主要负责代码功能及图形界面的实现,这也促进了自己编程能力的进步。领航员张昊辰也起到了至关重要的作用。从最开始的设计,之后的编程工作,以及最后的测试,如果没有他的帮助,我自己一个人是不容易很好的完成这些工作的。

原文地址:https://www.cnblogs.com/CodeAky/p/10807191.html

时间: 2024-11-07 15:08:16

第二次结对编程—四则运算自动生成程序的相关文章

20172316 结对编程-四则运算 第二周 阶段总结

20172316 结对编程-四则运算 第二周 阶段总结 1.项目内容 以结对小组形式编写代码,实现以下功能: 1.自动生成题目 2.题目运算(判题) 3.支持真分数 4.生成题目添加括号 5.题目去重(扩展需求,加分项) 6.文件处理(扩展需求,自行学习,加分项) 相关过程截图 最开始的代码名称十分不规范,有的使用拼音,有的使用英文,有的不知所云,其他组员第一次看见名称时不容易理解和衔接起来: 出现了两个程序之间符号表示的差异,对于式子的值的计算有很大影响: 结对评价 唐才铭 王文彬 关键代码解

20175325 第二周结对编程项目 四则运算

20175325 第二周结对编程项目 四则运算 一.需求分析: 实现一个命令行程序,要求: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 题目去重 能多次生成四则运算题目 能根据用户输入的数字生成四则运算的题目数量 多语言支持: 简体中文, 繁體中文, English 文件: 处理生成题目并输出到文件 完成题目后从文件读入并判题 用户能够选择是否开始答题 二. 设计思路: 产生随机数并且考虑符号的优先级. 能实现整

软件工程第二次结对编程

题目 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) 用户选择是否有括号.是否有小数 用户选择输出方式(如输出到文件.打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) 结对编程角色 驾驶员 爆个照 开发环境 系统:WindowsXP 软件:VS2010 语言:C# 项目地址 Coding.net地址:https://git.codin

第二次结对编程

1 题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. 题目1: :我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求 :能够自动生成四则运算练习题 :可以定制题目数量 :用户可以选择运算符 :用户设置最大数(如十以内.百以内等) :用户选择是否有括号.是否有小数 :用户选择输出方式(如输出到文件.打印机等) :最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主

软件工程第五次作业——第二次结对编程

题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. 题目1: 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) 用户选择是否有括号.是否有小数 用户选择输出方式(如输出到文件.打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) 角色分配 本次

结对编程--四则运算(Java实现)

结对编程--四则运算(Java实现) 四则运算 (JAVA ) By 梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围(此处感觉一个参数不太合理,因此改用 -r 参数控制自然数.带分数整数部分的范围,又额外添加了 -d 参数控制分数分母的范围,增

结对编程——四则运算(第一周)

结对编程--四则运算(第一周) 需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子数.计算结果 输出:判断后的答案(true/false) 满足真分数的运算如:1/3 + 1/4 = 7/12 处理的运算符为 +, ?, ×, ÷ 能处理用户的输入,并判断对错,统计正确率. 设计思路 自动生成四则运算,需要用到随机数,用随机数随机生成数字,以及随机

软件工程第二次结对编程作业

题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题.我们小队选择的是题目1: 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) 用户选择是否有括号.是否有小数 用户选择输出方式(如输出到文件.打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

20165322 第二周结队编程-四则运算

结对编程-四则运算 整体总结 学习笔记 中缀表达式转换为后缀表达式 如果遇到数字,我们就直接将其输出. 如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈. 如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈. 如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符.最后将该元素入栈. 如果我们读到了输入的末尾,则将栈中所有元素