关于管道布置及水表的问题

时间:2019-05-15 13:56:07下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《关于管道布置及水表的问题》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《关于管道布置及水表的问题》。

第一篇:关于管道布置及水表的问题

简介:根据多年工程实际设计经验并结合国家规范要求,对当前新开发小区住宅建筑给排水系统设计的一些特点展开探讨。

关键字:住宅给排水设计 水表设置 管道敷设

随着我国人民生活水平不断提高,新兴住宅小区不断涌现在人们面前,在购买住宅时,除了关注住宅的楼层、面积、平面布置等因素外,同时也将更多的注意力放在了住宅设备上。给排水系统作为住宅设备的重要组成部分,其系统设计是否合理,对今后住户的装修、日常使用与维护将产生重要影响。下面就几个方面结合本人在住宅设计过程中的一些经验与体会,浅谈住宅给排水系统设计中的一些新思路、新特点。

1水表设置及给水支管敷设:

1.关于水表设置。长期以来,单元住宅水表一般设于室内厨房或卫生间等用水集中处,对于用水点较多且分散的住宅,有时一户内设多个水表。但水表设于户内而引发的诸多问题日益引起人们的重视,即入户抄表扰乱人们的正常生活及可能导致的入户抢劫,使住宅私密性及安全性得不到保障;管理人员抄表不易且抄表劳动强度大;个别用户偷水而使水表用水量与实际不符而管理部门无法制止及处罚等。由于这些问题的产生,水表出户已成为必然的选择。新修订的国家规范(建筑给水排水设计规范》GB50015——2003第3.4.17条规定:住宅的分户水表宜相对集中读数,且宜设置于户外;对设在室内的水表,宜采用远传水表或IC卡水表等智能化水表。水表出户一般有以下几种方式:

a.分户水表集中设于室外水表井内:这种方式常用于多层单元式住宅中。一般一个单元设一个集中水表井,分户水管沿室内管井引入户内,自来水公司直接对用户负责。新型给水管材——减路式单管(内)多路供水管的面市解决了多根给水管同时敷设给工程及用户带来的不便,也使这种计量方式成为一种节能且人性化的优秀设计。

b.水表设于楼梯休息平台处。给水立管设于平台处,每户设一水表箱;将水表箱嵌入休息平台两侧墙体中。其优点为:分户支管短,较节约管材,管道水头损失也较小,缺点是:水表分散设置,抄表人员劳动强度较大;通常室内消火栓箱也明设于休息平台处,因而使本来就拥挤的休息平台更为局促,给住户通行带来不便。

c.水表每层集中设于水表间内,分户水表整齐靠于墙面。其优点同方式b相同,缺点是:分户管道必须沿公共走道楼板下引入室内,因而走道内要求设吊顶。

d.将传统的普通机械式水表改换为远传水表或IC卡智能型水表。远传水表计算准确且无需抄表,此卡表需用户预存入一定数额水费,将充值后的IC卡插入水表的读码器中即可用水。由于远传水表和IC卡表价格相对昂贵且在技术上仍存在一定问题,因而在实际工程中尚未得到广泛应用。

以上几种水表出户方式,各有其优缺点,具体在工程实际设计中采用何种方式,应由设计入员根据住宅的性质、档次及当地行业管理部门的要求确定。

2.给水支管布置与敷设。由于新建住宅中一厨两卫已很普遍,有的住宅甚至配有一厨三卫、一厨四卫,且厨房、卫生间、阳台各用水点位置均较分散,分户支管至用水点间管道一般敷设在本层垫层内,垫层内给水管外径不超过25mm;交房时应在敷设给水管道的位置做上明显的标记,以免装修时破坏给水管道。2排水管道敷设:

《住宅设计规范》GB500155—2003第4.3.8条规定;住宅卫生间的卫生器

具排水管不宜穿越楼板进入他户。规范虽然有此规定,但在现实住宅设计中,真正能做到这一点的尚不多。于是在日常生活中,经常出现上下层住户因排水管道漏水而导致的各种纠纷、影响邻里关系。为解决这一难题,以下提出一些做法以期解决此问题。

1.厨房排水管道设置。厨房内不设地漏,洗涤池排水支管直接在本户的楼板上接入排水立管。由于厨房地面一般已很少用水冲洗,少量的溅水用抹布就可完成地面的清洁,厨房内地漏的设置已无实际意义,反而事得其反:由于地漏长时间无水补充,水封内存水蒸发后臭气由地漏进入厨房内。因此可采取取消厨房地漏的设计避免地漏排水支管进入下层户内空间。

2.卫生间排水管道设置。为了不使卫生间污水横管进入下层户内空间,排水管道的敷设一般采用以下几种方式:

a.卫生间地面楼板下沉,污水横管设于本层下沉板以上的户内。这种方式对排水管道的施工较为方便,但检修管道则十分不易。这就要求在实际施工过程中,严格做好卫生间地面的防水处理及下沉室四周的防水处理,卫生间内所有给排水管道应经严格试压住水试验后方可暗封管道等以尽量避免本层卫生器具漏水影响下层用户。

b.采用侧排方式。卫生间采用后出水式座便器,侧排地漏,将浴盆或淋浴房垫高,各卫生器具排水横支管沿卫生间地面墙脚处引至夹墙。器具存水弯、排水横管设于本层垫层内。采用这种方法,可避免出现下沉式积水的状况,但应注意与建筑专业密切配合。

3室内消火栓系统:

室内消火栓箱的设置:对于单元式住宅来说,由于平面位置限制,消火栓一般只能明设于楼梯休息平台,根据《建筑设计防火规范》》GB50016-2006第8.3.1

第5条的规定:超过7层的住宅应设置室内消火栓系统,当确有困难时,可只设置干式消防竖管和不带消火栓箱的DN65的室内消火栓……消防竖管的直径不应小于。DN65.因此多层住宅消火栓可只留栓口,不必设箱及水枪、水龙带等,以节省楼梯休息平台的实际空间。

4小结

住宅给排水系统的设计日益受到用户的重视,工程设计人员应本着技术、安全、经济性原则,在实践中力求创新,寻找最佳的给排水设计方案,适应住宅设计发展的新要求,满足人们不断提高的生活水平要求。-注册建筑师

第二篇:水表问题

水表问题汇总

6、自己研究缓解水表自转好方法,少交点冤枉水费 水表自转原因分析与控制 产生自转原因

一、压力波动:由于水是液体,在一般情况下表现出来的物理特性是不可压缩的,但在自来水管道中管道压力较高,这时水就会表现一定的可压缩性。在自来水管道中压的波动是不可避免的,而且我们所采用的都是机械表(IC卡水表机械部分)都靠水在其中流动产生的动能来带动齿轮运转,从而达到计量目的。当不用水时水表两端连接管道中都存在一定量固定的高压水,因此,当管网压力升高时表后管道中的自来水体积会因压力增加而缩小,此时就会有微量的水通过水表产生正转,当压力降低时表后管中被压缩的水因压力降低而膨胀,同样会有微量的水通过水表,所不同的是这时是反转。我们都知道一般机械表在进水时是下进上出,推动齿轮正转,而水表倒装时进水是上进下出,虽然两头进水量相同,但反映在水表上的读数却相差很大。

二、气囊:这种原因产生的自转水量较大,因自来水会溶入大量的气体,如果管道上排气阀设置不合理,气体就不能很好的排除,这样如果家里长时间不用水或设计不合理,家中的管道最高点就会有气囊产生,众所周知,气体的可压缩性很高,这时如果管网上有压力波动,表后管道内的空间伸缩将会很大,因此而产生的水表自转量较高。

三、安装方式及安装质量:水表留出的直管段少,也会影响水表正常计量造成水表自转。

控制方法

一、在表前装止回阀,止回阀可以起到阻止水倒流的作用,这样在压力升高时自来水的体积被压缩水表产生正转动,当压力降低时止回阀自动关闭,水表不产生转动。当压力再次升高时,只要压力不高过止回阀内压力,水表不会再转,水表自转主要是水表往复多次计量,才累计出很大的水量,安装止回阀可以减少自转的频率也就能够很好的解决压力波动造成的自转。

3、从统计分析中看到,水表自转的主要原因还是由气体造成的,因此可以考虑安装排气阀。但是由于排气阀价格较高,且对安装位置、管道布置和止回阀灵敏度等要求较高,也会给管网维护管理增加一定的工作量,因此除非必要,尽可能少安装排气阀。

4.、结论

造成水表自转的原因很多,但总体上可以归纳为两个:一是主观因素,即人为主观上造成的,如施工验收中,人为责任心造成的漏水、原始集气等,这可以通过加强施工管理,提高工作人员的工作水平和责任心来完善。二是客观因素,这主要由水本身的特性、管道特点以及技术水平的发展等外在客观因素造成的,这一方面要在以后的工作中不断摸索改进才能有所改

10、水表自转成因分析及解决办法 1 水表自转情况介绍

2008年元月,由笔者公司设计的深圳某地产公司深圳布吉镇可园小区(高层住宅小区,塔楼高99m,33层)通过竣工验收开始交付业主使用,小部分业主在验房后并未装修入住,但是几个月后这部分业主却收到高额的自来水收费通知单。该小区水表自转统计见表1。

由表1知,该小区高、中、低3个区均存在水表自转的现象,而且自转的房间并无规律可循,即使同一房间读数的增加也是无规律的。以上数据均排除了漏水、阀门关不紧及住户偶尔用水的可能。从以上数据似乎不能分析出水表自转的规律,于是笔者从现场勘察入手,希望能找出水表自转的成因。

经笔者现场勘察发现:在住户无人用水的情况下,水表均产生目视可见的轻微自转现象,具体现象为:水表的最小刻度齿轮先轻微地向右转动几个刻度,之后再向左转动几个刻度回到初始刻度,如此反复。小区内装设的是自来水公司统一要求安装的防反转水表,即无论水表的叶轮是正转还是反转,只要水表的齿轮转动均会产生正向的读数累加。该小区给水系统设计采用恒压变频供水系统(无高位水箱),给水系统分成高、中、低3个区,每个区均由一套变频泵供水,每根给水立管的顶部均安装了快速排气阀。水表自转成因分析

况反应到自来水公司后,自来水公司给出的答复是:每只水表的自转水量在1~2m3/月属于正常范围,不计费。当长期无人居住时,最好的办法是关闭水表前的阀门。解决方法

(1)笔者翻阅的很多资料及设计实例,其中很多资料均提出在水表前端装设止回阀,可以起到阻止水表自转的作用。理论上分析,既然水表自转是因为压力波动、水往复通过水表造成的,那就可以考虑安装止回阀,止回阀可以起到阻止水倒流的作用。在压力升高时,水表产生正向转动;当压力降低时,止回阀自动关闭,水表不会产生转动,当压力再次升高时,只要压力不高过止回阀内压力,水表就不会再转。但是经笔者现场试验证明,止回阀阻止水表自转的效果并不明显,自转的水表还是自转,只是自转量稍微小了一点。笔者分析认为止回阀在前后压力变化很小的情况下,阀辨并不起作用或者关闭不是很完全,即没有起到阻止水流倒流的作用,水流通路里的压力变化却可以引起水表齿轮的转动。后来采用在水表前装设可调式减压阀,将入户管的压力降到0.15MPa,效果很明显,自转的水表基本上没有再自转。减压阀将管网的压力降了下来,同时也能起到止回阀的作用。

(2)采用金属管材。金属管材的可膨胀性比塑料管材小,可以有效解决室内管道受压膨胀的问题。

(3)减少气囊的形成。对于新装户表的住宅,在安装居民家中的管道时,应使管道沿一定的角度向上敷设,减少管道弯点、折点,并把管道的最高点设计在经常用的一只水龙头上,降低管网中产生气囊的机会。新装管道或新安装的户表首次通水时,应缓慢开启阀门,尽量排空管道内的空气,减少水中的含气量。

(4)在设计新的住宅时应该考虑水表前后有15倍管径的直管段,减少管道转弯处紊流对水表的冲击,不影响水表正常计量。

(5)设计变频供水系统时,合理配置使主泵与副泵的流量比约为4∶1,同时采用低转速的泵,低转速泵具有噪音低、振动小等优点。采用经合理配置的成套设备效果会更好。合理、优化设计的变频供水系统在转换工作泵时管网内水压波动小,可以很好地从源头上防止水表自转。

(6)水表应采用螺翼式水表,螺翼式水表相对于旋翼式来说没有那么精密,对微小的水压变化反应比较“迟钝”,在防止自转方面螺翼式水表比旋翼式水表效果

解决办法:用户入住安装水嘴用水或关闭水表处前后阀门。

3、户表改造后用户长期不住人,管内形成气囊,造成水表自转。解决办法:用户入住用水或关闭水表处前后阀门。

4、找不到原因而水表自转计量的现象。解决办法:对水表进行检定维修或更换。

14、水表自转原因及处理方法

一、几种原因:

1、压力波动

由于水是一种液体,当市政管网压力升高时,表后管中的自来水体积会因压力增加而缩小,此时就会有微量的水通过水表,产生正转;当压力降低时,表后管中被压缩的水因压力降低而膨胀,同样会有微量的水通过水表,所不同的是这时是反转。一般机械表在进水时是下进上出,推动齿轮正转,而倒过来进水时是上进下出,推动齿轮反转,两相进水所受的阻力不同,虽然二头进水量相同,但反映在水表上的读数却相差很大。据统计,在管道无空气的情况下,由此产生的水量很少,约为0.5-1m3/月。通常情况下,这点水量用户不会注意;同时这也是目前计量水平下正常的结果。

2、气囊

这种原因产生的自转水量较大。①自来水企业的生产工艺都是露天建设的,会溶入大量的气体,②在工程施工过程中,管道中也会带入气体,如果管道上排气阀设置不合理,气体就不能很好地排除。这样如果家里长时间不用水或管道设计不合理,家中的管道最高点或是突起点就会有气囊产生。众所周知,气体的可压缩性很高,这时如果管网上有压力波动,表后管道内的空间伸缩将会很大,因此而产生的水表自转量较多。据统计,由此产生的水量少则2-3 m3/月,多则每月会有几十立方的水量产生。因此来看,目前大部分出户水表产生自转现象,都是由于表后管内存在气囊造成的。

3、安装方式及安装质量

(1)由于现在水表出户大都是一个单元的户表均集中安装。考虑到冬季的防寒防冻以及抄表方便,用一根Φ40mm-Φ50mm的管子接6只或12只水表,表与表

■结论 造成水表自转的原因很多,但总体上可以归纳为两个:一是主观因素,即人为主观上造成的,如施工验收中,人为责任心造成的漏水、原始集气等,这可以通过加强施工管理,提高工作人员的工作水平和责任心来完善。二是客观因素,这主要由水本身的特性、管道特点以及技术水平的发展等外在客观因素造成的,这一方面要在以后的工作中不断摸索改进才能有所改善。

15、答:常见的问题有以下几种:有的水表长时间连续自转,而且转速均匀;有的水表短时间自转,特别是当楼下用户用水时水表开始自转,楼下用户关闭水龙头时,水表停止转动;还有的是水表指针向前走一小段距离,然后再倒回去一些等等。由于各用户水表安装等使用环境、条件的不同,出现水表自转的情况有些不同,其处理方法也不同。

水表自转的原因主要有:

1、水表后的内线管道漏水所致,主要是不易发现的漏水。如:表后水管埋在地下或嵌在墙中,漏水很难发现;坐便器、蹲便器漏水等卫生设施的漏水。

2、水表后的管道空气所致。水表后的水管太长,较长时间不用水时,管道内储存空气,当水压高时空气压缩,水压低时空气释放造成水的波动使水表自转。

3、主输水管管径过小。上楼层的主管道管径过小、楼下用户用水时,引起主管道水压变化、水的波动造成水表自转等。因此,在选择主管道的管径时,一定要考虑主管道后用户的用水量。

4、安装不规范所致。水表离主管道太近,主管道水的压力波动直接影响水表,造成水表的自转。因此,在选择水表位置时,水表离主管道不能太近。

除漏水原因外,不管是安装不规范所致,还是主输水管管径过小或是水表后的管道空气所致,都是因为管道内压力变化造成水的波动,产生“水表自转”。处理这类“水表空转”问题时,首先是打开用户室内的所有龙头,排除水龙头内的空气即可解决。

第三篇:到期水表轮换存在问题及措施

到期水表轮换存在问题及措施

《计量法》规定,用于贸易结算,并列入《中华人民共和国强制检定的工作计量器具目录》的计量器具属强制检定计量器具范畴,应按规定经强制检定合格后方能安装投入使用。国家规定对于不同标称口径,用于贸易结算的水表只作首次强制检定,限期使用到期轮换,使用期限一般不超过6年。公司 年加大水表检定力度,水表检定工作较往年同期再创新高,截止2015年底共检定 块,合格率100%。虽然水表首次检定工作可以顺利开展,但是按规定到期进行水表的轮换工作却没有得到很好的落实,有的安装了十多年的水表仍旧在继续使用。目前,岑溪市老旧住宅安装的水表大都是机械式水表,水表在使用一段时间后会出现积垢现象,在相同压力相同流量的情况下,就会导致水表流速变慢,使水表读数失真。

由于受到水表更换费用等因素的制约,使国家关于水表到期轮换的一直没有得到很好的落实。

水表是水资源计量付费之公正器,也是节能降耗和经济支出的依据。精确与否直接影响供水企业的经济、社会效益,还关系到用水户的切身利益。针对到期民用水表的监管空白,仍是公司高度重视的问题。

应对措施:

一是加大国家对到期水表轮换规定的宣传力度,转变用水户思想观念,认清水表到期轮换的重要性与紧迫性,同时增强员工的责任心和自信心。

二是准确统计每年每个片区用水户水表到期的数据,利用每月营销分析会,对到期水表用户住址、水表所处位置、现场更换难度等进行不同层次、多角度对比分析,遵循“先易后难”的原则实施。

三是层层落实指标任务,督促各片区按时完成到期水表更换,促使抄表员自学加强对生产经营的管理。

四是制订和实施更换目标管理考核办法,将该管理纳入公司的业绩考核体系当中,注重对过程到终端的指标体系的层层对比和评价,激励管理层和员工的工作积极性和能动性。

第四篇:屋顶管道支架基础布置及设备搬运方案

屋顶管道支架基础布置及设备搬运方案

1、主楼屋顶上的管道中心标高44.75米,水泵房内的管道中心标高46.5米2、14/C-E/1-2/A-B轴间的立管与主管水平连接,10-12/A-B轴间的4根立管贴楼梯间梁底向E轴方向延伸,下翻连接主管。

3、主机进出水管水平延伸至主管道下翻连接。缺点在于排气阀增加过多。

4、在屋顶上挖600×600方坑17个,用DN100钢管加δ=10mm钢板,固定在屋顶的水泥面上,回填做防水,3-6轴管道托架用200型工字钢,其他托架采用100型槽钢。

5、支架位置:1-2/B轴DN200×2支架宽0.97米,2/B-C轴DN200×2支架宽0.89米;3-6/B-C轴DN200×6-DN250×6支架宽2.6米,7/B-C轴DN250支架宽0.89米,8-9轴安装在伸缩缝两侧墙上,11/B-C轴DN250×2支架宽0,89米,12-13轴偏12轴方向/B-C轴DN125支架宽0.75米,13轴/B-C轴DN125×2轴支架宽0.75米,13-14轴偏14轴/B-C轴DN125×2支架宽0.75米,14/B-C/C-E轴DN125×2×2支架宽0,75米。

6、实际高度以伸缩缝墙高度为准44.57米;

7、主机吊装在屋面上,可利用管道支架固定的部位和基础为支点,用槽钢或钢

管与支架连接,主机在上面用倒链拖动搬运就位。北边两台做支点时与基础做平,南边1台用龙门吊吊起与基础支平再滑动就位。

河南太平洋工程有限公司

2011-5-30

第五篇:管道铺设问题

实验三:管道铺设施工的最佳方案

一.问题描述 1.实验题目:

需要在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,这个问题即为求无向网的最小生成树。2.基本要求:

在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。每条管道的费用以网中该边的权值形式给出,网的存储采用邻接表的结构。3.测试数据:

使用下图给出的无线网数据作为程序的输入,求出最佳铺设方案。

A38.244.618.28.7112.IB5.9CH52.541.1.379.256.4G10.585.667.3D参考解: 21E98.7F

AI.32B5.988.H7C41.1EGD二.需求分析

1.程序所能达到的基本可能: 2110.5F

在某个城市n个居民小区之间铺设煤气管道,则在这n个居民小区之间只需要铺设n-1条管道铺设n-1条管道即可。假设任意两个小区之间则可以铺设管道,但由于地理环境不同,所需要的费用也不尽相同。选择最优的方案能使总投资尽可能小,在可能假设的m条管道中,选取n-1条管道,使得既能连通n个小区,又能使总投资最小。

2.输入输出形式及输入值范围:程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。

3.测试数据要求:顶点数边数为整数,顶点信息为大写字母,边的权值为浮点型,C:data.txt文件内容为:ABCDEFGHI 1 2 32.8 2 3 5.9 1 3 44.6 3 4 21.3 4 5 67.3 4 6 98.7 5 6 85.6 5 7 10.5 3 7 56.4 6 9 79.2 7 8 52.5 1 8 12.1 8 9 8.7 1 9 18.2 3 5 41.1 三.概要设计

1.所用到得数据结构及其ADT typedef struct node //边表结点 { int NO;//邻接点域;vertexType adjvex;.379.2.112 EdgeType info;//权值

struct node *next;//指向下一个邻接点的指针域

}EdgeNode;

typedef struct vnode //顶点表节点 { vertexType vertex;//顶点域 EdgeNode *firstedge;//编表头指针

}VertexNode;

typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数

}ALGraph;// ALGraph是以邻接表方式存储的图类型 基本操作:ALGraph * CreateALGraph()//建表 2.主程序流程及其模块调用关系 1)主程序模块

开始显示主界面建表生成最小树结束

建表模块ALGraph * CreateALGraph()开始打开文件fp=fopen(“C:data.txt”,“r”);fp==NULL读取G->n,G->e顶点数边数printf(“Cann't open the file!n”);打开文件失败i=1i<=G->nYG->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;Nk=1k<=G->eYfscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);fscanf(fp,“%f”,&m);输入边的信息N关闭文件结束i++;将边的信息存储到邻接表中k++最小生成树模块void tree(ALGraph *G,int m)开始sum=0;low[m]=0;visited[m]=0;i=1Ni<=G->nYlow[i]=1000;teed[i]=m;s=G->adjlist[m].firstedge;Ns!=NULLi=1结束Ylow[s->NO]=s->info;s=s->next;Nini=1Ni<=G->ni++Yi!=mYmin=1000;j=1YNj<=G->nsum+=min;visited[k]=0;s=G->adjlist[k].firstedge;Yi++visited[j]>0&&low[j]NO]>0&&s->infoNO]low[s->NO]=s->info;teed[s->NO]=k;i++s=s->next;

函数调用关系图

CreateALGraph();建表main()主函数tree(G,i);生成最小树

四、详细设计

1.实现每个操作的伪码,重点语句加注释 1)建表模块

ALGraph * CreateALGraph()//建表 {

int i,j,k;float m;FILE *fp;EdgeNode *s,*t;ALGraph *G;fp=fopen(“C:data.txt”,“r”);//打开文件 if(fp==NULL)//未找到文件 {

} printf(“Cann't open the file!n”);exit(1);G=(ALGraph *)malloc(sizeof(ALGraph));

printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;

} for(k=1;k<=G->e;k++){ // printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k);// scanf(“%d,%d”,&i,&j);

fscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));// printf(“请输入第%d条边的对应权值n”,k);

t->NO=i;t->adjvex=G->adjlist[i].vertex;

fscanf(fp,“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->info=m;

t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;

} } fclose(fp);//关闭文件 return G;2)生成最小生成树模块 void tree(ALGraph *G,int m){

float low[100];int teed[100];int k,i,j;float min,sum=0;EdgeNode *s;low[m]=0;visited[m]=0;for(i=1;i<=G->n;i++)

{

} s=G->adjlist[m].firstedge;while(s!=NULL)//数组初始化 {

} for(i=1;in;i++){

min=1000;for(j=1;j<=G->n;j++){ low[s->NO]=s->info;s=s->next;low[i]=1000;teed[i]=m;

}

} if(visited[j]>0&&low[j]

} min=low[j];k=j;//标记节点

sum+=min;visited[k]=0;s=G->adjlist[k].firstedge;while(s!=NULL){

} if(visited[s->NO]>0&&s->infoNO])//找到最小权值 {

} s=s->next;low[s->NO]=s->info;teed[s->NO]=k;printf(“最佳铺设方案n”);

} 3)主函数模块 void main(){ ALGraph *G;int i;for(i=1;i<=G->n;i++)//输出最小生成树信息

if(i!=m)printf(“(%d,%d)%.2ft”,i,teed[i],low[i]);printf(“最小权值为:%.2fn”,sum);time_t rawtime;struct tm * timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);printf(“ 实验名称:实验三:管道铺设施工的最佳方案n”);printf(“ 学号:031350102n”);printf(“ 姓名:王亚文n”);printf(“=============================================n”);

printf(“程序运行开始,”);printf(“Current local time and date:%s”,asctime(timeinfo));G=CreateALGraph();//建表 printf(“输入开始节点n”);scanf(“%d”,&i);tree(G,i);//生成最小树 //printfALGraph(G);printf(“n”);

}

五、调试分析

1.设计与调试过程中遇到的问题分析、体会

1)一开始对文件读写操作不熟,采用从键盘输出的方式验证正确与否,对应程序如下: int i,j,k;

float m;EdgeNode *s,*t;ALGraph *G;printf(“Current local time and date:%s”,asctime(timeinfo));G=(ALGraph *)malloc(sizeof(ALGraph));

printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;

} for(k=1;k<=G->e;k++){ printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k);

scanf(“%d,%d”,&i,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));printf(“请输入第%d条边的对应权值n”,k);

} 对应截屏如下:发现这种方式输入耗时长,而且在生成树程序不正确时修改程序需要重复输入,较为麻烦 t->NO=i;t->adjvex=G->adjlist[i].vertex;

scanf(“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->info=m;

} return G;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;

2)为检验所建立的无向网,编写了一个输出函数,输出各个顶点以及与该顶点相邻的其他顶点以及对应权值,输出函数为void printfALGraph(ALGraph *G)//输出表 {

int i;EdgeNode *s;printf(“输出信息n”);for(i=1;i<=G->n;i++)

} 输出测试截屏如下证明从文件读写的与所需要建立的无向网相符 {

} printf(“%c的邻接点及权值:n”,G->adjlist[i].vertex);s=G->adjlist[i].firstedge;while(s!=NULL){

} printf(“n”);printf(“%c %.2f ”,s->adjvex,s->info);s=s->next;

2.主要算法的时间复杂度分析

六、使用说明

程序运行后,显示提示信息:请输入顶点数和边数(输入格式为:顶点数,边数)之后程序从文件名为”C:data.txt读入顶点信息和边的信息,之后显示提示信息输入开始节点,执行生成最小树程序,输出生成的最小树信息。

七、测试结果

3)这个程序遇到的第一个主要问题是在建表过程,因为边的顶点信息是大写英文字母,一开始我是用的ASCLL码值,使用不方便,后来采用在定义时考虑多定义一个量,原程序: typedef struct node //边表结点 {

vertexType adjvex;

//邻接点域;EdgeType info;//权值

struct node *next;//指向下一个邻接点的指针域

}EdgeNode;修正后的程序为:

typedef struct node //边表结点 {

int NO;//邻接点域;vertexType adjvex;EdgeType info;//权值

struct node *next;//指向下一个邻接点的指针域

}EdgeNode;这样多定义了一个量在后面的过程中会简单许多,其次书上给的程序是生成有向网的,一开始我是考虑的将边输入两边,就是在循环时的终止条件设为k<=2*G->e;这样虽然能解决无向网问题,但是一条边重复输入两边,较为麻烦,后期修正为:

s->NO=j;

s->adjvex=G->adjlist[j].vertex;s->info=m;

s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->NO=i;t->adjvex=G->adjlist[i].vertex;t->info=m;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;修正后的函数虽然语句较之前的多了5句但在输入时少输了一半的边信息。其次解决耗时最长的一个错误是在建表中,原程序:

typedef VertexNode Adjlist[MaxVertexNum];

typedef struct //邻接表 {

Adjlist adjlist;//int n,e;//顶点数和边数 int n;int e;}ALGraph;// ALGraph是以邻接表方式存储的图类型 这个程序是抄的书上的,一开始不觉得书上的程序会是错的,结果一直没有看这个定义,在输入边的信息时循环次数总是不对,一直尝试着改动写的输入信息,弄了一下午也没有搞定这个问题,于是去求助研究生学长,下面是研究生学长发过来的邮件帮我指出错误所在,看了学长的这封邮件后,重新改了一下自己的程序,修正后的程序为 typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数 }ALGraph;// ALGraph是以邻接表方式存储的图类型

程序修正后输入正常了,就开始进入下一个阶段生成最小树的程序。

3)在生成最小树这个程序的编写中,开始因为编程序是在老师讲解生成树之前,所以一开始是完全没有地方下手,网上百度了一下如何生成最小树,发现有两种方法,Kruskal和prim算法,但研究生学长这个适合用prim算法,Kruskal算法适合与边稀疏的连通图求解最小生成树,所以在编写时主要研究的是用prim算法,在编写prim算法时除了很多问题,例如一开始我并没有在循环中写teed[i]=m;这句话,导致在最后输出边的信息时会有随机数产生,截图如下:

想到随机数产生可能是因为没有赋值,所以加上teed[i]=m;这句话果然最后就输出正确了,再次在输出时,产生的结果中有重复的一个节点,<1,1>1000.00这个不应该被输出,所以考虑在输出时加一个限制条件

if(i!=m)再次输出就没有了,中间编写时问题不大,之前有看过prim算法的详细介绍,所以在主思路上没有太大的错误,相对写起来也比较顺利。

2)建立邻接表的复杂度为O(n+e);Prim算法的时间复杂度为O(elogn);

八、附录 #include #include #include #include //输入序号与字母对应关系A-1,B-2,C-3,D-4,E-5,F-6,G-7,H-8,I-9 #define MaxVertexNum 100 typedef char vertexType;typedef float EdgeType;int visited[100];//访问变量,为一时表示未访问 typedef struct node //边表结点 {

int NO;//邻接点域;vertexType adjvex;EdgeType info;//权值

struct node *next;//指向下一个邻接点的指针域

}EdgeNode;

typedef struct vnode //顶点表节点 { vertexType vertex;//顶点域 EdgeNode *firstedge;//编表头指针

}VertexNode;

typedef struct //邻接表 { VertexNode adjlist[MaxVertexNum];int n,e;//顶点数和边数

}ALGraph;// ALGraph是以邻接表方式存储的图类型

ALGraph * CreateALGraph()//建表 {

int i,j,k;float m;FILE *fp;EdgeNode *s,*t;ALGraph *G;fp=fopen(“C:data.txt”,“r”);//打开文件 if(fp==NULL)//未找到文件 {

} printf(“Cann't open the file!n”);exit(1);G=(ALGraph *)malloc(sizeof(ALGraph));

printf(“请输入顶点数和边数(输入格式为:顶点数,边数)n”);scanf(“%d,%d”,&G->n,&G->e);for(i=1;i<=G->n;i++)//建立顶点信息 { G->adjlist[i].vertex=fgetc(fp);G->adjlist[i].firstedge=NULL;visited[i]=i;

} for(k=1;k<=G->e;k++){ // printf(“请输入第%d条边的两个端点序号,输入格式为:i,jn”,k);// scanf(“%d,%d”,&i,&j);

fscanf(fp,“%d”,&i);fscanf(fp,“%d”,&j);s=(EdgeNode *)malloc(sizeof(EdgeNode));t=(EdgeNode *)malloc(sizeof(EdgeNode));// printf(“请输入第%d条边的对应权值n”,k);

}

fscanf(fp,“%f”,&m);//保存边信息,以无向网方式 s->NO=j;s->adjvex=G->adjlist[j].vertex;s->info=m;s->next=G->adjlist[i].firstedge;G->adjlist[i].firstedge=s;t->NO=i;t->adjvex=G->adjlist[i].vertex;t->info=m;

} fclose(fp);//关闭文件 return G;t->next=G->adjlist[j].firstedge;G->adjlist[j].firstedge=t;void tree(ALGraph *G,int m){

float low[100];int teed[100];int k,i,j;float min,sum=0;EdgeNode *s;low[m]=0;visited[m]=0;for(i=1;i<=G->n;i++)

{ low[i]=1000;teed[i]=m;

} s=G->adjlist[m].firstedge;while(s!=NULL)//数组初始化 {

} for(i=1;in;i++){

min=1000;for(j=1;j<=G->n;j++){

} sum+=min;visited[k]=0;s=G->adjlist[k].firstedge;while(s!=NULL){

} if(visited[s->NO]>0&&s->infoNO])//找到最小权值 {

} s=s->next;low[s->NO]=s->info;teed[s->NO]=k;if(visited[j]>0&&low[j]

} min=low[j];k=j;//标记节点 low[s->NO]=s->info;s=s->next;} printf(“最佳铺设方案n”);

} /*void printfALGraph(ALGraph *G)//输出表 {

int i;EdgeNode *s;printf(“输出信息n”);for(i=1;i<=G->n;i++)//输出最小生成树信息

if(i!=m)printf(“(%d,%d)%.2ft”,i,teed[i],low[i]);printf(“最小权值为:%.2fn”,sum);for(i=1;i<=G->n;i++)

} */ void main(){

ALGraph *G;int i;time_t rawtime;{

} printf(“%c的邻接点及权值:n”,G->adjlist[i].vertex);s=G->adjlist[i].firstedge;while(s!=NULL){

} printf(“n”);printf(“%c %.2f ”,s->adjvex,s->info);s=s->next;struct tm * timeinfo;time(&rawtime);timeinfo = localtime(&rawtime);printf(“ 实验名称:实验三:管道铺设施工的最佳方案n”);printf(“ 学号:031350102n”);printf(“ 姓名:王亚文n”);printf(“=============================================n”);

printf(“程序运行开始,”);printf(“Current local time and date:%s”,asctime(timeinfo));G=CreateALGraph();//建表 printf(“输入开始节点n”);scanf(“%d”,&i);tree(G,i);//生成最小树 //printfALGraph(G);printf(“n”);

}

九、实验收获和感想

在这个管道铺设问题的程序设计中,弄懂题意后发现其实这个题需要解决两个问题,一个是建立无向网的问题,另一个就是最小生成树的求解,所以这个程序设计还是需要模块化设计这个思路,首先需要解决的是如何建立无向网,在这个过程中我编写了一个输出函数以检验所建立的无向网是否是我们所需要的,建立无向网这个过程是我编写这个程序耗时最长的,因为开始一味的相信书上的程序是正确的所以吃了不少苦,最后还是多亏了研究生学长才得以解决这个问题,这个教训也告诫我不能一味的相信书本,最后能输出正确结果的才是正确的程序,在之后的程序编写时不要再因为是书本的原程序就原封不动的抄上在后续出错时也不检查是否是这个抄的程序的错误,再次是要善于用自己所学的知识简化问题而不是只用一种方法解决这个问题,在这个程序中建立边表信息时再多建立一个NO信息就可以大大简化问题,所以编写程序时还是要多想想其他办法,还有就是这个测试数据有9个顶点信息,15条边的信息,在测试时挨个输入显然会很麻烦,所以善于运用文件操作会很方便的,但printf(“Current local time and date:%s”,asctime(timeinfo));是最开始我是使用的键盘输入,并且将原语句保留在程序中,使用时可以使用键盘输入,或者在定义的文件C:data.txt中改变边和顶点信息,不管怎么说,使用文件操作后真的是方便很多,在经历了一次又一次要输入9个顶点信息15条边信息后第一次使用文件操作后感悟还是蛮大的,而且通过上面截图对比发现界面也简洁很多,所以还是要多学些东西这样才可以在某些时候简化问题,使问题解决的更加方便,还有就是要善于求助,例如在建立无向网时被一个问题坑了一下午,这个时候去求教学长,不仅可以解决问题,而且能更加清晰的记住这个问题,还有因为这个程序最开始编写时老师没有讲到prim算法,书上也没有相关知识,而自己又无从下手时,这个时候可以考虑上网查些资料,毕竟网上资源还是很丰富的。

总之,这个管道铺设问题程序语句最后写下来并没有很多行,但还是暴露了自己的很多问题,在解决问题的过程中慢慢完善自己,希望自己的编程能力能有所提高。

下载关于管道布置及水表的问题word格式文档
下载关于管道布置及水表的问题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    化工企业设备、管道设计布置技术要求

    化工企业设备、管道设计布置技术要求 1设备布置设计的一般要求是什么? 答:(1)满足工艺流程要求,按物流顺序布置设备; (2)工艺装置的设备、建筑物、构筑物平面布置的防火间距应符合安......

    第二节 压力管道的布置和供水方式

    第二节 压力管道的布置和供水方式 一、压力管道的布置 压力管道是引水系统的一个组成建筑物。压力管道的布置应根据其形式、当地的地形、地质条件和工程的总体布置要求确定......

    PE燃气管道的施工特点及需注意的问题

    一、前言: 在燃气输配设计中,城市燃气管道有钢管、铸铁管等多种。但随着时间的推移,金属管材耐腐蚀性差、成本高、运输安装不便的缺点逐渐显露出来,于是人们已把眼光投向了塑......

    冷水水表安装及验收管理办法(暂行).

    附件: 济宁中山公用水务有限公司 冷水水表安装及验收管理办法(暂行) 为规范水表管理,对冷水水表的安装、验收等提出技术管理要求,以提高管理水平,保证水表准确计量。对水表安装与......

    燃气管道存在的问题及整改建议(合集5篇)

    存在的问题及整改建议 经现场勘察后发现现场管线存在如下问题: 1、 燃气报警器安装高度偏低,建议按规范调整报警器的安装高度, 并核实连线是否正确。 2、 放散管安装有误,需要者......

    管道输配的纳税问题

    2006年3月17日,笔者对石门县兴业管道燃气有限公司进行纳税申报辅导时,该公司对管道燃气安装是否征收营业税以及怎样计征等问题提出疑问。笔者经过查证推敲,认为该公司向用户收......

    开业庆典会场布置及安排

    开业庆典会场布置及安排 为使开业庆典安全有序的进行,根据庆典的需要,特安排如下:一、会场布置1、拱门空飘花篮布置 A、分别在酒店的两个进口、大门前布置3个拱门。B、空飘悬......

    寒假作业的检测及布置

    假期作业布置与检测的具体方案 大连第七十一中学 明确检测作业不等于假期作业的全部,备课组除了必做作业与选做作业之外,检测作业只是假期作业的一部分,便于学校对假期作业的监......