首页 > 文章中心 > 数字运算

数字运算

数字运算

数字运算范文第1篇

目前,国际上已出现了许多数字水印方案,但由于数字水印的研究是基于信号处理、数字通信、密码学等多学科领域的思想,一种数字水印方法总是不可避免地存在着这些领域的一些固有缺点。文提出了一种基于单向哈希函数的数字水印方法,但遭到了文[2]的攻击。本算法借鉴了文[1]的采用不可逆运算可提高算法安全性的思想,提出了一种基于模运算的,采用私人密钥的数字水印算法,该算法不仅隐藏效果好,而且安全性也较好,既可抵抗lsb进攻,又可抵抗剪切进攻以及噪声干扰。 2 嵌入提取算法

其中,dir表示下一嵌入位置的方向,即由现在的嵌入位置往何方向移动才可到达下一位置,dis表示移动的步长(见图1和图2及相关说明),pix_num则表示已隐藏的水印比特数。式(l)中的8代表着8个邻域,式(2)中加1是为了防止出现距离等于0的情况。

(5)重复(3)、(4)直至水印图像中的每个比特都被嵌入到原始图像中。

可以看出,在此算法中,除水印信息的第一个比特的嵌入位置由私钥及任选的大素数决定以外,其余位置皆由上一位置处像素的灰度值及已嵌入的比特数决定(即第(4)步)。具体是这样确定的: 选取八邻域,方向如图1所示。若此时隐藏位置为图2中的?处,且通过(1) 、(2)分别计算得到dir=3,dis=4,则下一隐藏位置处于方向在?的左上方,距离?有dis-1个像素远的那个像素,如果已到达图像的左边缘或上边缘,则循环到右边或下边,如图2所示,?的下一位置在?处。 3 2 1 4 ? 0 5 6 7 图1 八邻域 1 ······ ? ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ······ ? ······ 3 2 ······ 图2 隐藏位置分布 2.2 提取算法

水印的提取与水印的隐藏基本上是两个对称的过程:

(1)输入密钥k计算种子x, y, z;

(2)计算第一个隐藏位置(x,y,z);

(3)从(x,y,z)处提取一个比特;

(4)计算下一隐藏位置;

(5)重复(3) 、(4),直至水印图像的每个比特都被提取出来.

2.3 关键技术

在以上的水印隐藏与提取过程[3]中,有两个问题需要解决:第一,计算出的隐藏位置(x,y,z)可能出现冲突;第二,计算出的z可能位于像素的最高比特,若修改此位,则嵌入水印后的图像就会出现较严重的失真。

实验中,分别采用了以下解决办法:

(1)建立一个临时表来记录已嵌入了水印信息的位置(x,y,z),每计算出一组(x,y,z)后就到表中查找,如果在表中能找到一组相同的(x,y),则表明产生冲突,这时就放弃该组(x,y,z)再计算下一组;否则将该组(x,y,z)放入临时表中,并在该(x,y,z)处嵌入一个比特的水印信息。

(2)为了解决第二个问题及有效抵抗lsb进攻,每当计算出一组(x,y,z)后,我们检查z的值,若z=1或z=8,则放弃该组(x,y,z);否则,则修改(x,y)处的第z位。由于仅修改该位可能造成此像素的灰度值与原图像中该像素的灰度值相差很大,从而嵌入水印后的图像与原始图像相比变化太大,因此不仅要改变该像素的第z位,而且其余各位也要相应变化,以使改动过的像素,其灰度值与原图像中该像素的灰度值相差最小[4]。 3 结果分析

实验中采用的原始图像为标准图像lena(256×256),水印图像为写有“中国地质”四个字的二值图像(64×64)。

图3为原始标准图像lena及水印图像。   图3

图4为嵌入水印后的图像wm-lena及从中提取出的水印。   图4

图5为遭受lsb攻击后的图像wm-lena及从中提取出的水印   图5

图6为遭受剪切攻击(1/4)后的wm-lena及从中提取出的水印   图6

数字运算范文第2篇

关键词:数字化技术;计算机软件工程;现代化

计算机软件工程有其特殊的性质和特征,它涉及诸多领域,具有一定的复杂性和系统性,它普遍应用于人们的生活和工作之中,成为各种信息资源共享的有效平台,为人们带来了诸多便捷,也在信息化、现代化社会快速发展的背景下,起到了不可替代的关键性作用。

1计算机软件工程数字化技术应用的意义与作用

计算机软件工程属于新兴事物,它进入我国之后,在技术层面获得了较大的发展和进步,在现代化、数字化技术应用的平台上,通过信息的链接和共享,逐渐形成了新的产业链和核心技术,并且随着数字化技术的宽泛发展,计算机软件工程已经替代并超越了传统技术,然而,在计算机软件工程数字化技术发展的进程中,也还存在一些问题和缺陷,考虑到一些应用技术自身创新性的缺乏,在一定程度上限制了机软件工程的应用与发展。为此,需要增强我国自主研发和创新的计算机数字化技术,只有在把握自主、创新的数字化、现代化技术的前提下,才能推动计算机软件工程向前、健康发展,才能为我国的国家安全防御力量保驾护航,推动我国现代化事业的进步与发展。

2计算机软件工程的发展现状

我国在计算机软件工程方面的管理还有待进一步完善,由于实际业务与软件需求之间的距离,阻滞了计算机软件工程的进一步发展。具体体现为:(1)计算机软件工程设计需求与实际业务需求之间的差距。由于在计算机软件工程设计过程中,相关数据分析与市场调查工作还不够全面,深度也还不足,因而,无法对数据进行科学的把控。(2)后续设计与开发软件的过程中,也存在软件产品设计与实际需求之间的差距。(3)由于软件工程设计与开发的干扰因素较多,加之设计开发人员的专业素质还不足,因而造成了计算机软件工程开发与设计方面的问题。

3计算机软件工程开发的常用方法及关键技术分析

当前在科技不断成熟和先进的态势下,计算机软件开发技术常用的方法主要有以下几种:(1)计算机软件生命周期法。这种计算机软件开发方法是在时间的视角和维度之下,将软件中的各项子问题进行拆分和细化,并在各个阶段中要统一标准,实现软件的合理开发。通常计算机软件的生命周期为六个月左右。(2)自动形式的计算机软件系统开发法。这种方法主要侧重于计算机软件的具体内容以及目标的实现。(3)原型化法。这种常用方法主要是用于系统适用性和算法效果不确定或者描述不够详尽的条件下采用的,并且,在计算机软件开发的初期,设计人员要对计算机软件整体系统的功能及注意事项,进行明确的分析和认定。在计算机软件工程开发的过程中,逐步形成了以下关键技术,具体表现为:(1)XML关键技术。它是一种与HTML类似的软件开发关键技术,在计算机网络应用中占据较大的地位,它属于描述性程序语言,重点对数据和对象进行描述,可以用于计算机软件工程设计开发中的跨平台数据通信应用编程。(2)WebServices关键技术。在计算机网络之中,Web服务是普遍应用的服务内容,它可以实现不同硬件平台、不同计算机语言的链接。(3)面向对象编程关键技术。这个关键技术为计算机软件工程设计开发提供了便利,它极大地减轻了软件开发人员的压力,并以Java作为主流的程序开发语言,使计算机软件工程到达了一个前所未有的高度。这一技术在软件应用程序的基本功能,如图1所示。

4推动计算机软件工程的数字化技术应用的优化策略

4.1强化计算机软件产品开发与服务创新

计算机软件工程的可持续、健康发展,要以软件产品与服务的优质、创新性为前提,要以软件产品和服务的创新融合为切入点,成为推动计算机行业发展的增长点和驱动力,并使计算机软件工程与数字化、现代化技术相接轨,引领计算机软件工程向智能化方向发展。

4.2积极保护计算机软件工程的自主产权

在计算机软件工程中,要努力研发国内自主创新技术,并在市场的导向之下,形成市场利益共享化机制,各个计算机软件工程企业之间可以连结成软件工程技术开发联盟,为计算机软件工程项目提供市场支持、资金支持、资源支持等,从而提升计算机软件工程的产品质量与服务创新水平。

4.3实现计算机软件工程的优化升级

计算机软件工程产品的多样化、创新化实现,要依赖于计算机软件工程的优化升级,可以利用各种开发软件工具,创设软件开发环境,对计算机软件进行升级和优化,提升其先进性和针对性。总而言之,随着信息化的高度发展,计算机软件应用在很大程度上便捷了人们的生活和工作。计算机软件工程要注重利用计算机软件开发技术,运用各种数字化工具,对计算机软件工程项目进行产品质量研发和创新,并努力创造条件实现对计算机软件工程项目的自主产权保护,充分发挥政府的职能,实现资金、资源、市场的有力支持和整合,为计算机软件工程的优化升级创造条件。

参考文献

[1]李万军,曹艳云.论计算机软件工程管理工作[J].才智,2012(03).

[2]李建兵.计算机软件工程方法的进展研究[J].新课程(下),2011(08).

数字运算范文第3篇

关键词:数字测算系统;房屋面积;测绘;运用研究

中图分类号:P2文献标识码: A

现如今随着房地产行业的关注度不断提高,人们对房屋的要求也逐渐提高,房屋面积问题也是很重要的问题。同时随着计算机技术的不断发展,为了满足人们对此的要求,数字测量系统也应运而生。数字测算系统是一种利用计算机,通过数字化技术,对房屋面积很好的输入和输出的一种系统。通过数字测算系统的应用,可以准确的计算出房屋面积,极大的减少计算误差,提高了工作效率,具有很好的应用前景。本文主要通过分析数字测算系统在房屋面积测绘中的具体应用,以期提高效率,减少工作强度,提高计算效果,减少测量误差。

一、数字测算系统的概述

数字测算系统是指通过对计算机利用数字测绘测算房屋的面积,然后在计算机的控制下,进行输入和树种的一种系统。通常采用坐标法,将房屋面积测算出来。

二、数字测算系统的主要功能

数字测算系统可以很大的提高工作效率,提高办公的自动化。其具体功能主要表现在以下几方面。

首先,数字测算系统可以进行数据采集。通过电子经纬仪、红外线测距仪、电子测速仪等电子仪器在已有的相关图片上或者直接进行采集。这样可以提高数据采集效率,从而减少工作时间。

其次,数字测算系统可以方便的进行数据输入。通过将所采集到的一系列数据直接转换成AutoCAD软件可以接收的数据等,然后生成文件,减少数据输入好时候的麻烦以及产生的不必要错误。

第三,数字测算系统可以很好的对数据进行编辑和处理。计算机程序可以很好的对所输入的数据进行保存、粘贴、复制、检索、合并、修改、删除等,自动生成房屋面积测算所需要的相关各种符号,提高数据的正确性,完整性以及可靠性,减少人为的误差。

第四, 数字测算系统可以很好的进行数据的运算。通过利用计算机程序,对在房屋面积测绘中所需要的一些地貌特征以及其他相关相似性进行分类,然后进行运算,避免了人工运算的人为错误以及效率低等缺点。

第五,数字测算系统可以对数据进行很好的管理和输出。数字测算系统对数据的管理主要在数据库中进行。通过分析数据打印数据,将数据变成可视图形,然后进行缩小或者放大,对数据进行输出。

数字测算系统通过依靠AUTOCAD软件来绘制图形,然后进行相应的对比,提高数据库对数据的管理和存贮等功能,使的数据的管理和储存更加数字化,规范化,一体化,自动化以及科学化。计算机系统可以将图形自动输出,然后结合标准,进行推算,提高工作效率,值得很广泛的推广和应用。

三、数字测算系统的成图方式和推算方式

数字测算系统的成图方式主要划分为两种。第一,编码法。这种方法主要是首先进行外业的测量和记录数据,然后开始编码,对数据进行编制,开始进行处理和绘图。第二,草图法。这种方法和编码法的主要区别是不需要进行测点的编码和记录,通过人工进行测点草图的绘制,以软件具有的交互编图的功能来进行绘图。并以此为基础,进行测点相关属性及关系的划分和描述,同时,将测点的自然编号标示出来。

一般情况下,数字测算系统的推算方式主要也是以上两种,即编码法和草图法。

四、应用数字测算系统测算房屋面积的流程分析

房屋是现在人类生活居住以及生产等的主要场所。房屋的开放,利用以及管理都和人们的一切密切相关。采集和表述房屋用地的相关要素情况,测绘是首要环节。通过测绘,然后明确房屋的现状以及产权,然后转化为数据和图表等形式将这一系列的结果展示出来,更好的发挥计算机及数字化的技术,提高自动化效果,提高效率,减少误差,提高结果的准确性与可靠性,从而使人们放心,进而提高房屋的社会效益和经济效益。

应用数字测算系统测算房屋面积的流程主要为以下叙述。

1.房屋平面图的数字测绘

首先对图和导线进行测设,当房屋等建筑项目工程施工结束,即竣工验收后,应当对整个项目工程的建设区域的道路进行导线网等的布设,然后利用全站仪来在现场进行观测和数据的采集。最后将数据输入到计算机之中,最 后通过导线的平差软件来开展总体的平差。

然后进行底层平面图的测绘,在各个导线的点 处开展全站仪的安装,并对整个房屋的底层外墙的角点坐标开展测设,将所采集到的数据都输入到计 算机之中,进而将底层的平面绘制出来。

最后开展分户平面图的测绘。测绘的过程和上 述内容基本相似,也是采取检定合格的测距仪,对 现场的各个房屋的尺寸进行测量,最后将各个数据 平差以后,将数据输入到计算机之中,最终将分户 的平面图绘制出来。

如某一个学校的一幢教学楼总共是 5 层,现在要对整个楼房屋的面积进行测绘。因为该建筑是学校的教学楼,所以只能分摊到层,而没有具体的分摊到户。该建筑的阳台属于半封闭性质的阳台,所以在计算阳台面积的时候只需要计算一半的面积就可以。另外有柱门廊的地方应该计算百分之百,没有柱门廊的地方则应该按照百分之五十来进行计算。具体的步骤主要有以下几个方面,首先外业采 集数据,然后进行内业数据的平差,然后通过软件 来进行绘图,在画好图之后开展检核。在检核没有错误的情况下进行定义分摊和结构,最后将层图和户图进行输出,进而生成成果的文档。

2.应用后的结论

在房屋面积测绘中应用数字测算系统,可显著提高房屋面 积面积测算效率,加快人们办证的工作效率。房产的测绘测成 果较规范化和统一化,其线条和点均能满足标准,字体工整和美观,图面整齐。成果资料均是以图纸、电子图和光盘等 形式来保存的,便于产籍和房产的管理,使房屋测量的精度得到了提高,房屋面积的测算更为准确,有效防止一些关于房产面积出现的纠纷。同时其内外业的一体化,突破了传统的作业模式,有效降低了外业测算人员劳动强度,大大提高其作业效率。

五、数字测算系统的展望

数字测算系统可以非常方便的对普通地面的内容进行任意形式的要素组合,拼接形成新的地图对数字地图进行任意比例尺任意范围的绘图输出缩短成图时间,方便与卫星影像,航空照片等其他信息源结合,生成新的图种,利用数字地图记录的信息,派生出新的数据等特性,所以可以考虑淡化比例尺的概念,用图单位只要根据实际的用途需要,提出具体的测绘内容即可不必在涉及比例尺的大小,而测绘单位也不再根据测量规范按比例尺所限定的测绘内容,花费人力、物力测绘数量众多,存在周期短。从用户的角度来看,有没有什么意义的地形地物。对于提高作业效率,节省经费很有实际意义。由于数字测图顺应了现代测绘技术的新潮流,与传统白纸测图相比全数字地形测图不只在方法上有所改进在技术上也有本质的飞跃。随着数字化测图的迅速发展,未来数字化测图的作业方法将由编码方法向无码方法转变提高成图质量,也从对作业人员的理论上平上,数字化地形图正计算机上应同时也因不同比例尺数字图的差别仅仅区别于细致程度不同而与精度不关。所以在未来的数字化测图中应考虑淡化传统的比例尺概念代之以更具体的地形、地物的表达要求

数字测算系统的应用在我国已逐步成熟了,新技术普遍的应用,计算机技术的不断发展测绘仪器的不断更新,各种软件的出现定会把数字测算系统推向新的高潮。

结语

在房屋的面积测绘过程中应用数字测算系统, 能够很好的提升对于房屋面积的测算效率,最大限 度的节约人们的办证时间。数字测算系统有着一定 的统一化和规范化,字体清晰,图表美观,能够满 足点和线条的标准。且成果资料主要是电子图、光 盘的形式保存起来的,对于房产的管理有着一定的 积极作用,大大的提升了房屋的测量精度,也能够 在一定程度上防止因为房屋面积所产生的纠纷。同 时因为数字测算系统大大的突破了传统的房屋面积 的测量模式,所以可以很好的降低测算人员自身的 劳动强度,因而可以很好的提升工作的效率。

参考文献

[1]吴鹏天昊,吴立新,沈永林,许志华,王植. 基于 高分影像纹理分维变化的灾害自动识别方法[J].地 理与地理信息科学,2012(02).

数字运算范文第4篇

关键词:中缀表达式;后缀表达式;算符优先;堆栈

中图分类号:TP31文献标识码:A文章编号:1009-3044(2009)32-8921-03

A Study of Index and Suffix Arithmetic Expression in the Operation Applied Research

GUO Meng-meng, XU Yong-chang

(Shandong Yingcai College, Jinan 250104, China)

Abstract: The expression evaluation is the most basic question in programming language translation. Compared with infix expression with which people are familiar, suffix expression does not have the parenthesis, nor does it have the priority difference; each operation is carried out according to the order in which the operator appears. Therefore it is suitable for the serial work of the computer processing mode. This article first analyses and compares these two kinds of expression, then attempts to prove that suffix expression is superior to infix expression through the concrete analysis of the realization of evaluation algorithm of these two kinds of expression. Finally it discusses briefly the transformation of infix expression into the suffix expression.

Key words: infix expression; suffix expression; priority operator; stack

表达式求值是程序设计语言编译中的一个最基本问题。通常书写的算术表达式是由操作数和运算符以及改变运算次序的圆括号连接而成的式子。运算符包括单目运算符和双目运算符两类,单目运算符只要求一个操作数,并被置于该操作数的前面,双目运算符要求有两个操作数,其位置因表示方法不同而有所差异。按照运算符与运算对象的位置关系,算术表达式的表示方法分为前缀表达式、中缀表达式和后缀表达式三种,其中后两者较为常用。为了简便起见,在本文的讨论中只考虑双目运算符(仅+、-、*、/四种)以及括号。

1 分析

中缀算术表达式最为常见,其双目运算符置于与之相关的两个运算对象之间。对中缀表达式的求值,并非按照运算符出现的自然顺序来执行其中的各个运算,而是根据算符间的优先关系来确定运算的次序,此外,还需要顾及括号规则。中缀表达式的计算比较复杂,它必须遵守以下三条规则:

1) 先计算括号内,后计算括号外;

2) 在无括号或同层括号内,先乘除运算,后加减运算,即乘除运算的优先级高于加减运算的优先级;

3) 同一优先级运算,从左向右依次进行。

从以上规则可以看出,在中缀表达式的计算过程中,既要考虑括号的作用,又要考虑运算符的优先级,还要考虑运算符出现的先后次序。因此,各运算符实际的运算次序往往同它们在表达式中出现的先后次序是不一致的,是不可预测的。中缀算术表达式符合人的思维方式,我们凭直观判别一个中缀表达式中运算符运算顺序并不困难,但对于计算机处理起来就比较复杂了。由于传统计算机一维的计算模型,只能一个字符一个字符地扫描,要想确定哪一个运算符优先计算,就必须对整个中缀表达式扫描一遍,一个中缀表达式中有多少个运算符,原则上就需要扫描多少遍才能计算完毕,这样算法的时间复杂性就差了,显然是不可取的。

那么,能否把中缀算术表达式转换成另一种形式的算术表达式,使计算简单化呢? 回答是肯定的。波兰科学家卢卡谢维奇(J.Lukasiewicz)很早就提出了算术表达式的另一种表示,即后缀表示,又称逆波兰式,其定义是把运算符放在两个运算对象的后面。采用后缀表示的算术表达式被称为后缀算术表达式或后缀表达式。在后缀表达式中,不存在括号,也不存在优先级的差别,计算过程完全按照运算符出现的先后次序进行,整个计算过程仅需扫描一遍表达式便可完成,显然比中缀表达式的计算要简单得多。例如,对于后缀表达式“124C5/”,其中‘’字符表示成分之间的空格,因减法运算符在前,除法运算符在后,所以应先做减法,后做除法;减法的两个操作数是它前面的12和4,其中第一个数12是被减数,第二个数4是减数;除法的两个操作数是它前面的12减4的差(即8)和5,其中8是被除数,5是除数。

那么中缀算术表达式转换成对应的后缀算术表达式的基本思想是什么呢?其实很简单,就是把每个运算符都移到它的两个运算对象之后,而后删除掉所有的括号即可。

实际上J.Lukasiewicz最先提出的是表达式的前缀表示方法,即把每一个运算符置于运算对象之前,例如表达式“10+(20-5*3)/(13-8)”其前缀表示形式为“+ 10 / - 20 * 5 3 -13 8”。前缀表达式的优点与后缀表达式的相同,也不含有括号,表达式中的运算也是按照运算符出现的顺序进行的,计算也很容易实现。但由于其表示方法与人们的习惯相差甚远,因而并不常用。

对于简单的中缀表达式我们很容易得到其后缀表达式,但对于较为复杂的中缀表达式就很难从直观上得到其后缀表达式。

我们可以用一棵二叉树来表示算术表达式,非终端结点表示运算符,终端(叶子)结点代表运算对象,如10+(20-5*3)/(13-8),那么按照先序、中序、后序遍历二叉树,就可以分别得到前缀、中缀和后缀算术表达式。如此可以很方便地实现三种算术表达式的相互转换。

用计算机又是怎样实现它们之间的转化的呢?以下是自然语言描述的表达式转前缀算法:

1) 求输入串的逆序。

2) 检查输入的下一元素。

3) 假若是操作数,把它添加到输出串中。继续输入下一个字符。

4) 假若是闭括号(‘)’),将其入栈。继续输入下一个字符。

5) 假如是运算符,则

① 假如栈空,此运算符入栈。继续输入下一个字符。

② 假如栈顶是闭括号,此运算符入栈。继续输入下一个字符。

③ 假如它的优先级高于或等于栈顶运算符,此运算符入栈。继续输入下一个字符。

④ 否则,栈顶运算符出栈并添加到输出串中,重复步骤5)。

6) 假如是开括号(‘(’),栈中运算符逐个出栈并输出,直到遇到闭括号。闭括号出栈并丢弃。继续输入下一个字符。

7) 假如输入还未完毕,跳转到步骤2)。

8) 假如输入完毕,栈中剩余的所有操作符出栈并加到输出串中。

9) 求输出串的逆序。

假设我们要将表达式“2*3/(2-1)+5*(4-1)”转换成前缀形式,原表达式的逆序是“)1-4(*5+)1-2(/3*2”,输出串的逆序为“+/*23-21*5-41”,所以,最终求得的前缀表达式是“+/*23-21*5-41”。

2 实现

在计算机中进行算术表达式的求值是通过堆栈来实现的。后缀表达式由于其本身所具有的优点,表达式中各个运算是按照运算符出现的顺序进行的,其计算求值比较简单,扫描一遍即可完成。它只需要使用一个栈,用来存储后缀表达式中的操作数、计算过程中的中间数据以及最后结果。

而具体的求值比较简单,扫描一遍即可完成。它需要使用一个栈,假定用S表示,其元素类型应为操作数的类型,假定为整型int,用此栈存储后缀表达式中的操作数、计算过程中的中间数据以及最后结果。假定一个后缀算术表达式以字符‘$’作为结束符,并且以一个字符串的方式提供。后缀表达式求值算法的基本思路是:把包含后缀算术表达式的字符串定义为一个输入字符串流对象,每次从中读入一个字符(空格作为数据之间的分隔符,不会被作为字符读入)时,若是运算符,则表明它的两个操作数已经在栈S中,其中栈顶元素为运算符的后一个操作数,栈顶元素的下一个元素为运算符的前一个操作数,把它们出栈后进行相应运算即可,然后把运算结果再压入栈S中;否则,读入的字符必为操作数的最高位数字,应把它重新送回输入流中,然后把下一个数据作为整型数据输入,并将其压入栈S中。依次扫描每一个字符(对于整型数据仅需扫描它的最高位并一次输入整个数值)并进行上述处理,直到遇到结束符‘$’为止,表明后缀表达式计算完毕,最终结果保存在栈中,并且栈中仅存这一个值,把它弹出返回即可。用类C++语言描述的表达式后缀表达式求值的算法如下所述:

int postexpression (char* str)

{// 计算由str字符串所表示的后缀表达式的值,表达式要以‘$’字符结束。

stack S;// 用S栈存储操作数和中间计算结果

InitStack(S); // 初始化栈

istrstream ins(str);// 把str定义为输入字符串流对象ins

char ch;// 用于输入字符型数据

float x;// 用于输入整型数据

ins>>ch;// 从ins流对象(即str字符串)中顺序读入一个字符

while (ch! =‘$’)

{ // 扫描每一个字符并进行相应处理

switch (ch)

{case‘+’:x=Pop(S) +Pop(S); break;

case‘-’:x=Pop(S);// Pop(S)弹出减数

x=Pop(S)-x;// Pop(S)弹出的是被减数

break;

case‘*’:x=Pop(S)*Pop(S); break;

case‘/’:x=Pop(S);// Pop(S)弹出除数

if(x! =0.0)x=Pop(S)/x; // Pop(S)弹出的是被除数

else {// 除数为0时终止运行

cerr

break;

default: // 读入的必为一个整型数的最高位数字

ins.putback(ch); // 把它重新回送到输入流中

ins>>x;// 从字符串输入流中读入一个整型数据

}

Push(S,x); // 把读入的一个整型数据或进行相应运算的结果压入到S栈中

ins>>ch; // 输入下一个字符,以便进行下一轮循环处理

}

if (! StackEmpty(S)) // 若栈中仅有一个元素,则它是后缀表达式的值,否则为出错

{x=Pop(S);

if (Stack Empty(S)) return x;

else {cerr

}

else {// 若最后栈为空,则终止运行

cerr

此算法的运行时间主要用在while循环上,它从头至尾扫描后缀表达式中的每一个数据(每个操作数或运算符均为一个数据),若后缀表达式由n个数据组成,则此算法的时间复杂度为O(n)。此算法在运行时所占用的临时空间主要取决于操作数栈的大小,显然,它的最大深度不会超过表达式中操作数的个数,因为操作数的个数与运算符(假定把‘$’也看作为一个特殊运算符,即结束运算符)的个数相等,所以此算法的空间复杂度也同样为O(n)。

中缀表达式求值同样也可以用堆栈来实现,但实现相对于后缀表达式较为复杂,它采用一种称为“算符优先法”的算法,它必须严格按照前面所述的三条规则来进行计算。为了实现算符优先算法,要使用两个工作栈。一个称为OPTR,用以寄存运算符;另一个称为OPND,用以寄存操作数或运算结果,它的基本思想较后缀表达式计算的不同在于:当读取到运算符时并不可能作相应运算,必须首先比较运算符栈中栈顶元素与当前运算符的优先级。若为‘’则作相应运算并将结果入栈。

用类C++语言描述的中缀表达式求值算法描述如下:

int middexpression (char *exp)

{ stack *opnd=new(stack);//操作数栈

stack *optr=new(stack);//运算符栈

char ch=*exp;

int x=0,y,z;

int result;

optrpush(‘$’);

while(ch!=‘$’||optrgettop()!=‘$’)

//字符扫描完毕且运算符栈仅有‘#’时运算结束

数字运算范文第5篇

数的产生既来源于实际生产和生活的需要,又来源于研究数学问题的需要,例如,为区别收入1元和支出1元,可以将它们分别记为1元和-1元,而有了-1,像1-2这类“小减大”的数学问题也得以解决。

每个数都是一个具体确定的值,由数组成的算式的运算结果也是确定的值,例如,1+2表示l和2这两个大小确定的值相加,所得结果3也是一个确定的值,正因为数具有确定性,所以人们研究确定的量时离不开数,

数的确定性虽然使数能精确地表示量的大小,但是又使数的使用受到限制,研究一股性问题时,只有具体的数就不够了,例如,要用式子表示加法交换律,就不能用l+2:2+l,也不能用2+3=3+2,因为这样的式子都只能表示“某两个具体的数相加时,交换加数的位置,和不变”,而加法交换律是一般运算律,它适用于任意两个加数,不能用某两个具体的数来表示,研究含有未知数的数量关系时,同样不能只用具体的数,例如,要用式子表示“某个数的3倍比另一个数的2倍大1”,就要注意这里的“某个数”和“”一个数”都是未知数,虽然用具体的数可列出3×5=2x7+l,3x7=2x10+1,3x9=2x13+1等一系列式子,但是满足这一数量关系的“某个数”和“另一个数”有无穷多组,用有限多个式子无法完全表示它们。

随着数学的发展,人们越来越关注一般性问题,含有未知数的数量关系成为人们经常研究的内容,这促使数学语言也要与时俱进,突破只能使用具体的数的限制,为此,人们逐渐想到用抽象的符号代替具体的数,而字母就是一种使用起来很方便的符号,例如,用式子a+b=6+a表示加法交换律,这里的字母a和b没有确定的值,它们可以表示任意两个数,于是这个式子就有了一般性,义如,用式子3x=2y+1表示“某个数的3倍比另一个数的2倍大l”,这里的字母x和y没有确定的值,它们可以表示满足这一关系的任意两个数,包括“x=5,y=7”“x=7,y=10”“x=9 y=13”等无穷多种情形。

代数学是数学的一个重要分支,清代学者华蘅芳在他和英国人傅兰雅合译的西方数学著作《代数学》的卷首写道:“代数之法,无论何数,皆可以任何记号代之,”这显示出代数的基本方法起源于用符号表乐数,

1591年,法国数学家韦达(1540-1603)最先在数学著作中系统地用字母表示数,韦达认为:用字母表示数,可使一般性问题成为研究对象,让数学从传统的侧重于数的运算的算术中得到发展,韦达的创举促进了代数学的诞生,因此他被后人称为“代数学之父”。

有了用字母表示数的创举,式子中便可以出现字母(字母还可以表示未知数),这样的式子更适合用来研究一般性问题,所以这种由数与字母组成的式子成为代数研究的基本内容。

人教版初中数学教科书的第二章是“整式的加减”,整式是一种最简单的代数式,加减法是最基本的整式运算,运算的主要方法是合并同类项,这一章是代数式内容的入门章,也是大家后续学习的重要基础。

在代数式中,字母的地位比数要高,式子的分类,一般以其中字母的情况为标准,例如,区分整式与分式的方法是看分母中是否含有字母,整式中可以有分母,但分母中不能有字母,例如,a/2的分母中没有字母,它属于整式:2/a的分母中有字母,它不属于整式,

因为整式中的字母是用来表示数的,所以它们可以像数一样进行运算,数的运算法则和规律对整式的运算仍然适用,整式也有加减乘除四则运算,人教版教科书中分两次安排了这些内容,第二章只讨论整式的加减运算,乘除运算到八年级再讨论,通过第一章的学习,我们已经知道,在有理数的运算中,减法可以转化为加法,减去数a就等于加上它的相反数-a,这样加减法就可以统一了,因此,整式的加减法也可以统一起来认识,都看作求代数和的加法。