[从头学数学] 第20节 100以内的加法和减法(二)
来源:互联网 发布:python3网络爬虫 pdf 编辑:程序博客网 时间:2024/06/11 17:08
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第三层功法的修炼,
这次要修炼的目标是[100以内的加法和减法(二)]。
接着就可以画加法竖式了。
来尝试一下吧。
![](http://img.blog.csdn.net/20160101154202497)
小伟接着做:![](http://img.blog.csdn.net/20160101154711734)
结果让小伟大吃一惊:
看看效果吧:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第三层功法的修炼,
这次要修炼的目标是[100以内的加法和减法(二)]。
正剧开始:
星历2016年01月01日 13:58:44, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起观看[100以内的加法和减法(二)]。
然后小伟看到了竖式。
星历2016年01月01日 15:36:17, [机器小伟]说:[阿伟大人],这个竖式好有趣,我也要画。
要画竖式,先要解决右对齐的问题。
阿伟帮小伟解决了:
<span style="font-size:18px;">/*** @usage 把一个数字按照基准点右对齐绘制* @author mw* @date 2016年01月01日 星期五 13:59:42 * @param* @return**/function rightAlign(num, x, y, r) {var s = num.toFixed(0);var digitBit = s.length;var digit = new Digit();var xpos=0, ypos=0;for (var i = digitBit-1; i > -1; i--) {xpos = x - r * (digitBit - i);ypos = y;digit.number(s.charAt(i), xpos, ypos, r);}}</span>
接着就可以画加法竖式了。
<span style="font-size:18px;">/*** @usage 加法竖式* @author mw* @date 2016年01月01日 星期五 13:59:42 * @param* @return**//*算术竖式Vertical arithmetic加数addend被加数Augend加号Plus*/function verticalAdd(augend, addend, x, y, r) {var result = addend + augend;var xBeg = x ? x : 300, yBeg = y ? y :100, large = r ? r : 20;var maxBit = Math.max(addend, augend).toFixed(0).length;var plusPos = x - (maxBit+2) * r;rightAlign(augend, x, y, r);rightAlign(addend, x, y+1.5*r, r);plot.setFillStyle('black').fillText('+', plusPos, y+1.5*r, r);plot.beginPath().moveTo(plusPos - 1 * r, y + 2.5*r).lineTo(x + 1 * r, y + 2.5 * r).closePath().stroke();rightAlign(result, x, y + 3.5 * r, r);}</span>
来尝试一下吧。
于是小伟做了下面的题:
<span style="font-size:18px;">function myDraw() {plot.init();setPreference();var r = 20;var row = 0, col = 4;var task = [32,6,24,3,5,43,21,3,4,33];var len = task.length / 2;row = Math.ceil(len/(col-1));//document.body.appendChild(document.createTextNode(len.toFixed(0) + ', ' + row.toFixed(0)));var rowCount = 1, colCount = 2;for (var i = 0; i < len; i++) {setSector(row, col, rowCount, colCount++);if (colCount > col) {colCount = 2;rowCount++;}verticalAdd(task[2*i], task[2*i+1],0, 0, r);}}</span>
这节的有趣内容还是很多的,比如:
接着小伟看到了减法。
看来还要有减法竖式:
<span style="font-size:18px;">/*** @usage 减法竖式* @author mw* @date 2016年01月01日 星期五 13:59:42 * @param* @return**//*被减数Minuend减数subtrahend减号Minus sign*/function verticalSub(minuend, subtrahend, x, y, r) {var result = minuend - subtrahend;var xBeg = x ? x : 300, yBeg = y ? y :100, large = r ? r : 20;var maxBit = Math.max(minuend, subtrahend).toFixed(0).length;var minusPos = x - (maxBit+2) * r;rightAlign(minuend, x, y, r);rightAlign(subtrahend, x, y+1.5*r, r);plot.setFillStyle('black').fillText('-', minusPos, y+1.5*r, r);plot.beginPath().moveTo(minusPos - 1 * r, y + 2.5*r).lineTo(x + 1 * r, y + 2.5 * r).closePath().stroke();rightAlign(result, x, y + 3.5 * r, r);}</span>
小伟接着做:
<span style="font-size:18px;">function myDraw() {plot.init();setPreference();var r = 20;var row = 0, col = 3;var task = [45,3,64,42,48,18,25,21];var len = task.length / 2;row = Math.ceil(len/(col-1));//document.body.appendChild(document.createTextNode(len.toFixed(0) + ', ' + row.toFixed(0)));var rowCount = 1, colCount = 2;for (var i = 0; i < len; i++) {setSector(row, col, rowCount, colCount++);if (colCount > col) {colCount = 2;rowCount++;}verticalSub(task[2*i], task[2*i+1],0, 0, r);}}</span>
又来有趣的图了:
还有这个:
接着小伟看到了一个更加好玩的题:
解这种问题可是小伟的强项:
<span style="font-size:18px;">def tmp(): a = [46,18,76,31]; b = [7,37,52,65]; c = [98,71,80,91]; d = [18,29,36,9]; for i in range(len(a)): for j in range(len(b)): if a[i]+b[j] == 83: print('{0} + {1} = 83'.format(a[i], b[j])); for i in range(len(c)): for j in range(len(d)): if c[i]-d[j] == 62: print('{0} - {1} = 62'.format(c[i], d[j])); return;</span>
结果让小伟大吃一惊:
<span style="font-size:18px;">>>> 46 + 37 = 8318 + 65 = 8376 + 7 = 8331 + 52 = 8398 - 36 = 6271 - 9 = 6280 - 18 = 6291 - 29 = 62</span>竟然有这么多的答案!
话说这节有趣的图还真多,这里又来一张:
连加怎么办,小伟问阿伟。阿伟说,这也好办,就给了小伟下面的代码:
<span style="font-size:18px;">/*** @usage 连续加法竖式* @author mw* @date 2016年01月01日 星期五 13:59:42 * @param* @return**//*算术竖式Vertical arithmetic加数addend被加数Augend加号Plus*/function verticalAdd2(arr, x, y, r) {var array = new Array();array = arr;var len = array.length;if (len < 2) return;var result = array[0] + array[1];var xBeg = x ? x : 300, yBeg = y ? y :100, large = r ? r : 20;var maxBit = Math.max(array[0], array[1]).toFixed(0).length;var plusPos = x - (maxBit+2) * r;rightAlign(array[0], x, y, r);y += 1.5 * r;rightAlign(array[1], x, y, r);plot.setFillStyle('black').fillText('+', plusPos, y, r);y += 1.0 * r;plot.beginPath().moveTo(plusPos - 1 * r, y).lineTo(x + 1 * r, y).closePath().stroke();y += 1.5 * r;rightAlign(result, x, y, r);if (array.length > 2) {for (var i = 2; i < array.length; i++) {maxBit = Math.max(result, array[i]).toFixed(0).length;plusPos = x - (maxBit+2) * r;result += array[i];y += 1.5 * r;rightAlign(array[i], x, y, r);plot.fillText('+', plusPos, y, r);y += 1.0 * r;plot.beginPath().moveTo(plusPos - 1 * r, y).lineTo(x + 1 * r, y).closePath().stroke();y += 1.5 * r;rightAlign(result, x, y, r);}}}</span>
看看效果吧:
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第20节 100以内的加法和减法(二)
- [从头学数学] 第41节 万以内的加法和减法(二)
- [从头学数学] 第16节 100以内的加法和减法(一)
- [从头学数学] 第39节 万以内的加法和减法(一)
- [从头学数学] 第12节 20以内的退位减法
- [从头学数学] 第70节 小数的加法和减法
- [从头学数学] 第87节 分数的加法和减法
- [从头学数学] 第09节 20以内的进位加法
- [从头学数学] 第14节 100以内数的认识
- [从头学数学] 第34节 万以内数的认识
- [从头学数学] 第11节 认识图形(二)
- [从头学数学] 第66节 观察物体(二)
- [从头学数学] 第99节 百分数(二)
- [从头学数学] 第71节 图形的运动(二)
- [从头学数学] 第55节 数学广角──搭配(二)
- [从头学数学] 第35节 克和千克
- [从头学数学] 第44节 长方形和正方形
- [从头学数学] 第60节 平行四边形和梯形
- ECharts 学习笔记(1)-HelloWorld
- 面向对象设计原则
- 大数据学习之路
- JAVA图形界面(GUI)之布局管理器
- poj 1988 Cube Stacking 数据结构 并查集
- [从头学数学] 第20节 100以内的加法和减法(二)
- JavaScript(1)
- Android Studio安装、配置
- 第10章 DOM小结
- java socket 编程
- Word标题自动编号
- map中使用自定义类指针作为key
- windows(win8)和linux(CentOS)的socket小程序演示和错误解决
- java中的this关键字