精华内容
下载资源
问答
  • 括号匹配

    2014-11-18 18:34:35
    ★实验任务小明正在解决一道计算, 不小心碰洒了一瓶墨水, 使一部分算式看不清了,计算是做不了了, ...对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号->中括号->小括号->尖括
    ★实验任务小明正在解决一道计算题, 不小心碰洒了一瓶墨水, 使一部分算式看不清了,计算题是做不了了,
     但是算式中有着许多括号包括有大括号{}, 中括号[],
     小括(),
     尖括号<>。 对于每一对括号, 必须先左边括号, 然后右边括号;
     如果有多个括号,则每种类型的左括号和右括号的个数必须相等;对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号->中括号->小括号->尖括号。例如,
    
    {[()]}
    {()},{{}}为一个合法的表达式, 而([{}])
    {([])},[{<>}]都是非法的。,小明对这些是括号很有兴趣, 他将这些括号单独抄写下来, 小明想知道括号是否能相互匹配的,你能帮助他吗?
    ★数据输入
    输入为一行仅包含上述四类括号组成的括号表达式,长度小于等于 100000.
    ★数据输出
    对于每个输入,考虑表达式的合法性,合法输出 YES,非法输出 NO。
    输入示例   输出示例
    {[(<>)]}    YES
    [()]        YES
    <>()[]{}    YES
    [{}]        NO
    {()}        YES


     
                #include <stdio.h>
    char sign[50001];
    int main(void)
    {
        int i,tmp,result=0;
        int prev=123;
        for(i=0;i<50001;i++)
        {
            sign[i]=getchar();
            if(sign[i]=='\n')  //能读到回车有两种情况1.括号都消去了,只剩下回车,那么i==0    2.还有一种<<<<<<<<<<>
            {
                if(i==0)
                {
                    result=1;
                    break;
                }
                else
                    break;
            }
            if(((tmp=sign[i]-prev)==2 || tmp==1)) //检查匹配消去问题的算法,借鉴于阿威
            {                                             
                if(i>1)
                {
                    sign[i-1]=sign[i]=0;
                    prev=sign[i-2];
                    i-=2;
                }
                else if(i>0)
                {
                    sign[i-1]=sign[i]=0;
                    i=-1;
                    prev=123;
                }
                else          //用来处理}开头的情况
                    break;
                
            }
            else if((tmp=sign[i]-prev)==0 || tmp==20 || tmp==-51 || tmp==-31 || tmp==-32 || tmp==-83 || tmp==-63)
                prev=sign[i];      //检查是否能与上一次的括号按照嵌套顺序对接(而非消去)
                                   //也能处理> ) ]开头的情况
            else                    
                break;            //处理本次括号与上一次括号无法对接的情况
        }
        if(result==1)
            printf("YES");
        else
            printf("NO");

        return 0;
    }
           

     


    展开全文
  • 对于一个形如 x op y (op 为运算符,x 和 y 为数)的算式而言,它的结果组合取决于 x 和 y 的结果组合数,而 x 和 y 又可以写成形如 x op y 的算式。 因此,该问题的子问题就是 x op y 的 x 和 y:以运算符分隔的...

    题目描述

    给定一个包含数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。返回所有可能的组合的结果。

    思路

    参考自力扣热门答案。

    对于一个形如 x op y (op 为运算符,x 和 y 为数)的算式而言,它的结果组合取决于 x 和 y 的结果组合数,而 x 和 y 又可以写成形如 x op y 的算式。
    因此,该问题的子问题就是 x op y 中的 x 和 y:以运算符分隔的左右两侧算式解。

    算法步骤

    分治算法三步走:

    1. 分解:按运算符分成左右两部分,分别求解
    2. 解决:实现一个递归函数,输入算式,返回算式解
    3. 合并:根据运算符合并左右两部分的解,得出最终解。

    代码

    在这里插入图片描述

    一些问题

    1. 在这里插入图片描述
    2. Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为null或“”都会报错。
    3. 字符串获取长度 str.length();获取字元素 str.charAt();
    4. List对象获取长度 list.size();
    展开全文
  • 1.需求分析: (1)自动生成四则运算算式(+ - * /),或两则运算(+ -)。 (2)剔除重复算式。 ...(5)生成运算存储到外部文件。... 2....拓展功能:当操作数生成负数是会产生小括号。 ...

      1.需求分析:

    (1)自动生成四则运算算式(+ - *  /),或两则运算(+  -)。

     

    (2)剔除重复算式。

     

    (3)题目数量可定制。

     

    (4)相关参数可控制。 

     

    (5)生成的运算题存储到外部文件中。

      2.功能设计:

    • 基本功能:随机生成算式,可控制题目数量及相关参数。筛选重复的算式并剔除。
    • 拓展功能:当操作数生成负数是会产生小括号。

      3.设计实现:


      共设计了4个函数:Ctrl_2or4:用来控制四则运算还是2则运算。

              Rand_Get:生成随机数,是否包含负数可控。

              Data_Filtering:数据过滤,剔除重复算式。

              My_print:控制输出。

      4.测试运行:

     

    1.生成四则运算,包含负数,操作数100以内,10道题:

     

     

     

     

     

    2.生成两则运算,不包含负数,操作数50以内,15道题:

     

     

     

    3.生成四则运算,包含负数,操作数范围1000以内,7道题:

     

     

     

      5.代码片段:

    • 生成随机数,控制操作数是否带负数:
     1 void Rand_Get(int c , int Maxl)
     2 {
     3     if( c == 1)
     4     {
     5         Num_a = rand()%(2*Maxl+1)-Maxl;
     6         Num_b = rand()%(2*Maxl+1)-Maxl;
     7     }
     8     else if( c == 2)
     9     {
    10         Num_a = rand()%Maxl;
    11         Num_b = rand()%Maxl;
    12     }
    13     else
    14     {
    15         printf("输入有误!");
    16     } 
    17 }
    • 数据筛选,剔除重复算式:
     1 int Data_Filtering(int flag )
     2 {
     3     int j,f3_flag,equ[Maxsize][3];
     4 
     5     f3_flag = 1;    
     6     equ[i][0]=Num_a;
     7     equ[i][1]=flag;
     8     equ[i][2]=Num_b;
     9     for(j=i-1;j>=0;j--)
    10     {
    11         if(equ[i][0] == equ[j][0])
    12         {
    13             if(equ[i][1] == equ[j][1])
    14             {
    15                 if(equ[i][2] == equ[j][2])
    16                 {
    17                     i--;
    18                     f3_flag = 0;                    
    19                 }
    20             }
    21         }
    22     }
    23     i++;
    24     return f3_flag ;    
    25 }
    • 控制是两则运算(+  -)还是四则运算(+  -  *  /):
     1 int Ctrl_2or4(int b)
     2 {
     3 
     4     int f2_c;
     5     if(b == 2)
     6     {
     7         f2_c = rand()%2;
     8     }
     9     else if(b == 4)
    10     {
    11         f2_c = rand()%4;
    12     }
    13     else
    14     {
    15         printf("输入有误!"); 
    16     }
    17     return f2_c;
    18 } 

     

     

       6.总结(如何实现程序“模块化”原则):

      利用函数,分层次分模块进行代码编写,将每个功能用函数描述出来,而不是全部都写在主函数里。

     

      7.PSP:

     

    PSP2.1

    任务内容

    计划共完成需要的时间(min)

    实际完成需要的时间(min)

    Planning

    计划

    15

    20

    ·       Estimate

    ·  估计这个任务需要多少时间,并规划大致工作步骤

    15

    20

    Development

    开发

    410

    520

    ··       Analysis

      需求分析 (包括学习新技术)

    10

    20

    ·       Design Spec

    ·  生成设计文档

    0

    0

    ·       Design Review

    ·  设计复审 (和同事审核设计文档)

    0

    0

    ·       Coding Standard

      代码规范 (为目前的开发制定合适的规范)

    5

    5

    ·       Design

      具体设计

    15

    20

    ·       Coding

      具体编码

    360

    450

    ·       Code Review

    ·  代码复审

    10

    10

    ·       Test

    ·  测试(自我测试,修改代码,提交修改)

    10

    15

    Reporting

    报告

    30

    45

    ··       Test Report

    ·  测试报告

    20

    25

    ·       Size Measurement

      计算工作量

    0

    0

    ·       Postmortem & Process Improvement Plan

    ·  事后总结 ,并提出过程改进计划

    10

    20

     

     

     

    转载于:https://www.cnblogs.com/chris-wang/p/11524405.html

    展开全文
  • 172 删除字符串中的特定字符 173 求解符号方程 174 计算标准差 175 求取符合特定要求素数 176 统计符合特定条件数 177 字符串倒置 178 部分排序 179 产品销售记录处理 180 特定要求字符编码 181 求解...
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 任意抽取4张牌,用加、减、乘、除(可加括号)把牌面上数算成24。每张牌对应数字必须用一次且只能用一次。在规定时间内输入算式,输入正确加十分,输入错误生命值减一,点击确定提交并进入下一,点击清空可...
  • 出题给小学生做,每次考试的题数可以设定,随机产生n个题目,将题目及标准答案写入文件;题目涉及加减乘除,带括弧混合运算;根据答题情况给出分数;将学生学号,每道题的答案,分数也写入文件,即每个学生...
  • 由计算机从题库文件随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道正确计5分,错误不计分,20道测试结束后给出测试总分 题库文件可采用实验二方式自动生成,也可以手工编辑...

    使用JAVA编程语言,采用结对编程方式实现四则运算出题小程序,软件基本功能要求如下:

    • 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分
    • 题库文件可采用实验二的方式自动生成,也可以手工编辑生成
    • 程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习
    • 程序允许用户进行多轮测试,提供用户多轮测试分数柱状图
    • 程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试
    • 测试有计时功能,测试时动态显示用户开始答题后的消耗时间
    • 程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择

    我的队友:

    李玉莹同学的园子

    Github项目地址:

    https://github.com/dushik/AthmeticPlus

    需求分析:

    • 程序人机交互界面是GUI界面,界面支持中文简体
    • 程序能够随机从题库选择试题,由用户输入答案,自动检查对错,统计成绩
    • 题库文件可基于实验二生成,也可自定义题库文件
    • 用户可以选择三种四则运算模式:百以内整数算式(结果非负,必须整数),带括号运算,真分数算式练习
    • 系统允许用户进行多轮测试,并实现用户测试测试分数的数据可视化(柱状图)
    • 测试时提供计时功能

    功能设计:

    • 采用java Swing编程实现人机交互界面的设计
    • 编写运算式生成类
    • 编写运算式计算类
    • 编写真分数运算类
    • 编写文件操作读写类
    • 编写数据可视化实现类

    设计实现:

    类图:
    1036158-20180331232428002-2038401934.png

    • 运算式的生成基于实验二,改进完成带括号的运算,真分数运算。使得主程序通过参数的不同来调用不同的方法生成不同的题库
    • 成绩的存储采用文件的写操作,将每次测试结果以追加的方式写入txt文件,保证不覆盖以前的成绩
    • 柱状图的绘制采用jFreeChart图表绘制类库实现,查看成绩时通过读取保存成绩txt文件的最后五行实现最近五次成绩的柱状显示
    • 文件操作类的功能应包括,按行写入文件,按行通过追加的方式写入文件,按行读取文件,按行读取文件的最后四行内容
    • 普通运算式计算类的功能包括,中缀表达式转后缀,计算后缀表达式
    • 分数运算式计算类的功能包括,分数的通分,分数的加操作,分数的减操作,分数的乘操作,分数的除操作

    测试运行:

    1036158-20180331185946274-850646875.gif

    核心代码:

    随机产生num个真分数运算式,计算结果,使得结果非负,并存入题库文件

    
            /**
             * 生成具有真分数运算式数的非负运算式
             * @param num
             */
            public void generateExpressionC(int num){
                char[] operator=new char[]{'+','-'};
                ArrayList<String> expression=new ArrayList<String>();
                for(int i=0;i<num;i++){
                    int n=random.nextInt(3)+2; //3-5个运算符
                    ProperFraction[] proList=new ProperFraction[n+1];
                    for(int j=0;j<=n;j++){
                        proList[j]=new ProperFraction();
                    }
                    char[] symbol=new char[n];
                    String ex=new String();
                    for(int j=0;j<n;j++){
                        char sm=operator[random.nextInt(2)];
                        ex+=proList[j].toString()+sm;
                        proList[0]=proper.calProperFraction(proList[j], proList[j+1],sm);
                    }
                    ex+=proList[n]+"="+proList[0].toString();
                    if(proList[0].getNuma()/proList[0].getNumb()<0){
                        i--;
                    }
                    else{
                        expression.add(ex);
                    }
                }
                doFile.WriteToFile("ArithmeticExpression.txt",expression);          
            }
    

    读取文件最后N行

    
        public ArrayList<String> readLastNLine(String path, long numRead)  
        {  
            File file=new File(path);
            ArrayList<String> result = new ArrayList<String>();  
            long count = 0;  
            if (!file.exists() || file.isDirectory() || !file.canRead()){  
                return null;  
            }  
            RandomAccessFile fileRead = null;  
            try{  
                fileRead = new RandomAccessFile(file, "r");  
                long length = fileRead.length();  
                if (length == 0L){  
                    return result;  
                }  
                else{  
                    long pos = length - 1;  
                    while (pos > 0){  
                        pos--;  
                        fileRead.seek(pos);  
                        if (fileRead.readByte() == '\n'){    
                            String line = fileRead.readLine();
                            result.add(line);   
                            count++;  
                            if (count == numRead){  
                                break;  
                            }  
                        }  
                    }  
                    if (pos == 0){  
                        fileRead.seek(0);  
                        result.add(fileRead.readLine());  
                    }  
                }  
            }  
            catch (IOException e){  
                e.printStackTrace();  
            }  
            finally{  
                if (fileRead != null){  
                    try{  
                        fileRead.close();  
                    }  
                    catch (Exception e){  
                    }  
                }  
            }  
            return result;  
        }  
    
    

    通过标准答案和测试结果,计算正确的题数

        /**
         * 通过标准答案和测试结果,计算正确的题数
         * @param resHm
         * @param ansHm
         * @return
         */
        private static int critical(HashMap<Integer, String> resHm,HashMap<Integer, String> ansHm){
            int count=0;
            for(Map.Entry<Integer, String> resentry:resHm.entrySet()){
                String resvalue = resentry.getValue() == null?"":resentry.getValue();
                String ansvalue = ansHm.get(resentry.getKey())==null?"":ansHm.get(resentry.getKey());
                if(resvalue.equals(ansvalue)){
                    count++;
                }
            }
            return count;
        }
    

    总结:

    本程序的主要难点在于生成不同类型的运算式用以满足用户需求,基本上是实验二的拓展部分,即对于真分数四则运算的设计实现

    PSP:

    PSP 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    计划 50 50
    Estimate 需求分析,函数实现 50 50
    开发 100 100
    Analysis 需求分析 5 10
    Design Spec 设计 30 30
    Design Review 设计复审 30 30
    Design 具体设计 30 30
    Coding 具体编码 30 30
    Code Review 代码复审,查找语法错误 2 2
    Test 测试 5 5
    报告 30 30
    Test Report 经测试,程序符合实验要求,但严重脱离实际应用 20 20
    Size Measurement 主要工作量应该在GUI编程这块 20 20
    Postmortem 此程序,确确实实的花了不少时间在Swing编程这块,也是由于第二个程序完成的太过仓促,在计算,生成,扩展功能这块完全重写了之前的。对于java的GUI界面编程到此为止吧,以后不会改进这个没有多大用处的程序 20 20

    对合作者的评价:

    • 和李玉莹同学的合作过程是非常愉快的过程,算是互相学习吧,她耐心,踏实。在编程的过程中发现了好几处不容易发现的错误,及早地将程序中的BUG扼杀在了摇篮中!
    • 当然,金无足赤,人无完人。每个人都有自己的缺点和短板。只有不断的改正,互相进步!才能提升自己!
    • 通过本次项目,极大地提升了我们的团队协作意识,在代码风格,注释习惯这方面以后会慢慢改进!

    团队协作的重要性

    • 团队协作的效果是不言而喻的,雷锋也说:一滴水只有放进大海里才永远不会干涸,一个人只有当他把自己和集体事业融合在一起的时候才能最有力量。

    最后,重要的事情,愉快的经历记录如下

    1036158-20180331234356055-1955323628.jpg

    转载于:https://www.cnblogs.com/dushik/p/8683324.html

    展开全文
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 ...
  • 一步步学算法(算法题解)---5

    千次阅读 多人点赞 2013-09-18 23:14:11
    本人大二,最近开始自学算法,在此记录自己学习过程接触的习题。与君共勉。 水平有限,目前涉及的题目都比较水。 题目分布为5+1. 5为自己学习的5道水。...编一程序对输入的含有大,,小括号的表达式进行括号配对
  • c源代码经典案例集(有游戏)

    热门讨论 2010-08-11 15:54:45
    188 符号算式求解 189 数字移位 190 统计最高成绩 191 比较字符串长度 192 合并整数 193 矩阵逆置 194 删除指定字符 195 括号匹配 196 字符串逆置 197 SIX/NINE问题 ...
  • 将学生学号,每道题的答案,分数也写入文件,即每个学生考试情况放在一个文件保存。 一个算式的求值:求一个可能包含加、减、乘、除运算中缀表达式值。在计算机,我们常用栈来解决这一问题。首先将...
  • 经典C程序220案列

    2008-10-26 11:09:36
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 出题给小学生做,每次考试的题数可以设定,随机产生n个题目,将题目及标准答案写入文件;题目涉及加减乘除,带括弧混合运算;根据答题情况给出分数;将学生学号,每道题的答案,分数也写入文件,即每个学生...
  • 将学生学号,每道题的答案,分数也写入文件,即每个学生考试情况放在一个文件保存。 一个算式的求值:求一个可能包含加、减、乘、除运算中缀表达式值。在计算机,我们常用栈来解决这一问题。首先将...
  • 四年级数学期末质量检测试题 一、读懂题意,认真填写。(每空1分,共19分) 1、10个0.1是( );...1、如果一个三角形两条边分别是30厘米、40厘米,第三条边长度要在下面三个量选出,只能选( )。
  • 一共有nnn组数据,每组数据给出四个0~9之间自然数,这几个数可以调换位置,在这几个数之间随意加上“+”、“-”、“*”、“/”符号组成合法算式,可以通过加括号改变顺序,要求计算过程不可以出现小数 询问是否有...
  • 牌(称牌组),用加、减、乘、除(可加括号)把牌面上数算成 24。每张牌必须用一次且只 能用一次,如抽出牌是 3、8、8、9,那么算式为(9-8)×8×3 或 3×8+(9-8)或(9- 8÷8)×3 等。 本主要考查栈、集合、...
  • 200个经典C程序【源码】

    千次下载 热门讨论 2013-08-08 10:48:40
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • C语言学习实例220例

    2015-06-16 23:47:59
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 尼科彻斯...
  • C语言实例解析精粹

    2014-03-14 21:57:05
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • 088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • C语言程序源代码(大集合).rar

    热门讨论 2010-10-30 19:06:59
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...
  • C语言常用算法

    2012-03-28 10:48:37
    088 马克思手稿中的数学 089 配对新郎和新娘 090 约瑟夫问题 091 邮票组合 092 分糖果 093 波瓦松分酒趣 094 求π近似值 095 奇数平方有趣性质 096 角谷猜想 097 四方定理 098 卡布列克常数 099 ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

中括号小括号的算式题