括号

结对编程项目分析

橙三吉。 提交于 2019-11-30 15:56:17
前言、 今天彻底完成了结对编程项目。 从个人项目开始到结对编程结束,过程一直比较坎坷。 个人项目的困难主要集中在出题方面,再详细点还是括号问题,最初的个人项目只能完成括号内括号,不能生成两个独立的括号,这个问题在结对编程开始时,参照搭档的c语言代码,已经得到解决。主要思想是建立两个列表分别记录每个数字左右两边的括号情况。 综述、 因为是第一次真正做一个ui的比较完整的小项目,第一次用python来做ui,一切也基本上是从零开始,从网上找资料学会最基本的之后,越往后就越需要自己一点点摸索。 在开始结对编程项目后,结合结对编程项目要求发现个人项目实现的多种功能都会不适合结对编程要求。比如后端的出题函数,如果出题出的不合理,在结对编程需要解题的时候就会无比复杂,真是给自己使绊子。这就要考虑重新规划出题的规则,从而简化解题步骤。 我和搭档的这个项目的解题步骤可以分为以下几步:去平方,去根号,去三角函数,到了这一步,python库的强大功能就体现出来了,只要是小学格式的题目,用python可以直接计算出来,省却了判断括号确定优先级来运算的这一复杂步骤。 结对编程项目开始后,第一想法就是做一个小的exe可执行文件,后来发现网页好像更适合这个项目,但是没有做网页的基础,需要从头开始学习,所以我和搭档两个人就一条路走到黑,一路研究python结合Qtdesigner来实现这个项目。 项目功能介绍、

结对项目总结

对着背影说爱祢 提交于 2019-11-30 15:16:23
在做个人项目时,只考虑了将题目完整、无歧义、无赘述的显示出来。未考虑如何进行计算,所以计算正确答案时遇到了很多问题。不过好在我在生成题目时,并没有像一些同学一样,以过程为导向,随机括号的位置。这样可能导致赘述,而且需要判断括号是否交叉,还导致难以计算的问题。我使用的是以结果为导向,随机运算符的优先级,根据优先级先添加括号,然后判断括号是否赘述,然后判断是否去除括号。这样避免了括号的赘述问题,也方便表达式的计算。 在这次结对编程中,我负责题目的计算和生成错误答案。在我动手做之前,java有计算表达式的函数,这让使用c++的我忍不住直喊“ java是世界上最好的语言! ”。不过当我看到他们计算出来的答案都是小数,不显示根号的时候,我觉得我可以做一个结果带根号的项目。因为像√55、√78、sin69这类的表达式根本就不是一个初高中生能计算的。然后我提取这些表达式最基本的单元:单项式。这个单项式包含以下属性:分子,分母,根号,根号下的数。它可以表示整数,分数,根号数,满足我的要求。因为这些复杂的运算,最后都化为单项式和单项式运算,所以我需要重载单项式的+-*/操作,最后根据需要调用+-*/即可。 说实话,这次的结对编程于我而言,作用不大。因为我们没有进行过需求获取、分析,也没有记录文档,而且还是按照之前的编程逻辑,面向过程编程,边写边分析,最后发现方向错了,还得重构代码。我在整个编程中

括号匹配(c语言实现)

ε祈祈猫儿з 提交于 2019-11-30 14:02:26
⭐ 我的网站: www.mengyingjie.com ⭐ 1要求 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现。 输入: 一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,“#”结束 输出: 成功:代表括号成对出现并且嵌套正确 失败:未正确使用括号字符。 2分析 用一个栈,就能解决该问题,左括号栈顶字符必须和第一个入栈的右括号字符匹配。 栈介绍:栈是一种特殊的线性表,仅能在线性表的一端操作。 栈的特性:后进先出(LIFO) 由于正在学数据结构,于是栈的定义与操作都是自己编写的,为了巩固概念 3代码 #include<stdio.h> #include <malloc.h> #define STACK_INT_SIZE 100 #define STACKINCREMENT 10 #define bool int //自定义bool变量 #define SElemType char typedef struct { SElemType *base; //栈基地址 SElemType *top; //栈顶地址 int stacksize; } SqStack; //------基本操作的算法描述------ //构建一个空栈 bool InitStack(SqStack *S) { S->base = (SElemType *) malloc(STACK_INT

括号匹配

空扰寡人 提交于 2019-11-30 14:01:32
⭐ 我的网站: www.mengyingjie.com ⭐ 编写程序检查该字符串的括号是否成对出现,而且不能交叉出现。 输入: 一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,“#”结束 输出: 成功:代表括号成对出现并且嵌套正确 失败:未正确使用括号字符。 分析 用一个栈,就能解决该问题,左括号栈顶字符必须和第一个入栈的右括号字符匹配。 栈介绍:栈是一种特殊的线性表,仅能在线性表的一端操作。 栈的特性:后进先出(LIFO) 由于正在学数据结构,于是栈的定义与操作都是自己编写的,为了巩固概念 代码 #include<stdio.h> #include <malloc.h> #include <stdlib.h> #define STACK_INT_SIZE 100 #define STACKINCREMENT 10 #define bool int #define true 1 #define false 0 #define TRUE 1 #define FALSE 0 #define SElemType char typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; //------基本操作的函数原型说明------ bool InitStack(SqStack *S);

面向对象再回顾

允我心安 提交于 2019-11-30 12:43:34
类与对象:   对象: 属性和方法的结合体,类是一系列共同的属性和方法   在现实中:先有对象再有类   程序中:现有类再有对象   定义类:(类名建议用驼峰命名) class关键 类名 class Student: # 变量表示属性 school='oldboy' def choose(self) print("选课...") def study(self): print('学习') # 生成对象 类加括号,生成对象 stu1 = Student() # 获取属性和方法 通过.来获取 print(stu1.school)print(stu1.choose) stu2 = Student() print(stu2.school)    打印stu1.choose打印的是他的地址,====>实例化产生的对象.未加括号的方法是表示的是这个方法的内存地址,上面的那些函数是类的函数,当对象调用的时候,他就变成了对象的绑定方法,查看类中的属性和方法print(Student.__dict__),他表示的是以字典的形式将k,v打印出来, k是类中的变量名, v是变量名的值, 在类中的函数的话,有函数还有函数的内存地址,那么这个k就是函数,v就是函数的地址,所以打印类.__dict__就打印的是类中的属性和方法,打印的是一个大字典 字典取值可以用中括号和get方法

字符串的展开题目

断了今生、忘了曾经 提交于 2019-11-30 12:21:35
题目描述 给定一个字符串,字符串包含数字、大小写字母以及括号(包括大括号,中括号,小括号),括号可以嵌套,即括号里面可以出现数字和括号。 按照如下规则对字符串进行展开,不需要考虑括号不成对的问题,不考虑数字后面没有括号的情况,即 2a2(b)不考虑。 数字表示括号里的字符串重复的次数,展开后的字符串不包含括号 将字符串进行逆序展开 123 输入abc2{de3[fg]}输出gfgfgfedgfgfgfedcba 解法 利用栈进行计算,每次判断此时是否是右括号,如果是的话,拿到对应的左括号之前的所有字符,在拿到对应左括号的数字,对字符进行重复以后,全部入栈。 如果不是右括号,那么直接入栈。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 import java.util.LinkedList;import java.util.Scanner;public class { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); int len = line.length();

JAV自学笔记 - 从零开始3

人走茶凉 提交于 2019-11-30 11:48:05
1java是如何工作的? eclipse可以理解成自带编译器,会生成电脑可以看懂的字节码文件。 即后缀名为.class的文件,通过Java虚拟机(JVM)执行字节码。 2 剖析类 我们成功运行了第一个程序,这个程序的内部是什么样子的呢? // 公开 类声明 类名称 类的左括号 public class MyFirstApp { //公开 后续讲 无返回 方法名 传参,后续讲 方法的左括号 public static void main (String[] args) { //打印到标准输出上 要输入的字符串,指双引号内 必须用分号结尾 System.out.println("我要去吃早餐啦") ; } //main()的右括号 } //类的右括号 扩展名为.java的源文件里,带有类的定义。 类是用来表示程序的一个组件,类的内容必须在{}里。 main()是程序的起点,程序运行后,会先找到它。 程序中可以有一个or多个方法。 编写的方法内容由语句组成,要写在属于方法的{}里。 语句以分号结束。 //新建Class文件后,自动生成的带有类的定义 public class HelloWorld { //main()主方法,程序的起点 public static void main(String[] args){ //输出语句,可以将双引号中的内容输入 System.out

如何用公式编辑器打分段函数公式?

女生的网名这么多〃 提交于 2019-11-30 10:07:22
分段函数也是数学里面要学习的,在Word文字处理软件中如果要插入分段函数,建议不要手工从键盘输入任何括号,因为在有的版本中,从键盘输入的括号不能随公式的高度变化。我们可以利用专业的公式编辑器MathType编辑较好看的分段函数。下面就来一起学习打分段函数的方法。 MathType软件免费获取地址: http://wm.makeding.com/iclk/?zoneid=17790 要求:编写如下图所示的分段函数 具体步骤如下: 1.打开Mathtype 公式编辑器 。 2.点击 栅栏模板,插入大括号。 3选其中的左括号,如下图所示。 在栅栏模板下选择左半边括号模板 4.然后,在 矩阵模板下选择多选按钮,如下图所示。 在矩阵模板下选择多选模板 5.在弹出的矩阵对话框中选择行数为3,列数为2,插入3×2矩阵。 在矩阵对话框修改行列数 6.插入矩阵后,在第一列输入函数表达式,第二列是相应的部分区间。除此之外,还可以打出很多数学符号,比如摄氏度符号,参考: 摄氏度符号怎么打? 看了以上教程,相信你已经学会了在MathType中编辑带有大括号的分段函数,这样就不怕在Word中打不出公式了,更多公式编辑技巧可以访问MathType中文官网。 以上教程参考自:http://www.mathtype.cn/jiqiao/fenduan-hanshu.html 来源: CSDN 作者: xshell

LeetCode-堆栈的使用

末鹿安然 提交于 2019-11-30 09:40:06
20. Valid Parentheses 有效的配对 https://leetcode.com/problems/valid-parentheses/ 题目:如果一个字符串只包含‘(’,‘)、’{‘、’}‘、’[‘和’]‘,则确定输入字符串是否有效。打开括号必须由相同类型的括号关闭,则输入字符串是有效的。开括号必须按照正确的顺序关闭。注意,空字符串也被认为是有效的。 思路:新建一个栈,遍历输入字符串,如果当前字符为左半边括号,则将其压入栈中;如果当前字符为右半边括号且栈为空,则直接返回false;如果当前字符为右半边括号且栈不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回false。 32. Longest Valid Parentheses 最长有效配对 https://leetcode.com/problems/longest-valid-parentheses/ 题目:给定一个只包含字符‘(’和‘)’的字符串,查找最长的有效(格式良好)括号子字符串的长度。 思路: ①使用Stack栈 ②DP动态规划 class Solution { public int longestValidParentheses(String s) { // using Stack Stack<Integer> st = new Stack<>(); int result = 0;

【Java基础】正则表达式

梦想的初衷 提交于 2019-11-30 08:19:08
目录 正则表达式 什么正则表达式 普通字符 预定义字符 特殊字符 数量限定字符 定位字符 选择符和分组 反向引用 预搜索 运算符的优先级 常用正则 附录 正则表达式 本文的大部分内容转载自 正则表达式从入门到实战 ,内容按照自己的风格进行了排版。 什么正则表达式 正则表达式(Regular Expression)可以理解为是对一种文本匹配规则的描述。正则表达式的主要作用是用来检索、匹配或替换那些符合某个(规则)模式的文本内容。比如我们要检查一个字符串是不是一个合法的邮箱,或者是不是一个合法的身份证时都可以使用正则表达式来匹配。 普通字符 普通字符主要指:字母[a-zA-Z]、数字[0-9]、下划线[-]、汉字,标点符号等。对于普通字符可以使用方括号表达式。如下: 但是,特殊字符(除了小尖角“^”和中划线“-”外)被包含到方括号中,就会失去特殊意义,只代表其字符本身。比如[\d.+] 匹配0-9的任意一个数字或者小数点“.”或者加号“+”。也就是说\d在自定义集合中仍然表示数字,但是小数点在字符集合中只表示小数点本身,而不是除“\r\n”之外的任何单个字符。 预定义字符 这类预定义字符可以匹配依赖字符。比如\d就可以匹配0-9这10个数字字符,使用起来比较方便。如果要匹配包括"\n"在内的所有字符,一般用[\s\S] 特殊字符 特殊字符在正则表达式中表示特殊的含义,比如:*,+,?,