简单的编程,谁能试试?-PLC技术网(www.plcjs.com)-可编程控制器技术门户


简单的编程,谁能试试?

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2006-5-20 0:09:58     来源:   作者: 点击:
点击【 大  中  小 】,可以选择字体的大小,以便你阅读.
简单的编程,谁能试试?
  河内塔游戏的编程算法,
  手机上的河内塔游戏,一般人都很熟悉,现在把它用PLC语言,实现出来,不知有人会否,
  就是,假设有N个圆片在A柱上,从小到大,分别为,1,2,。。。N,三个塔柱分别为A,B ,C,现要从A移动到C,以为B过度,也是从小到大排列,移动的过程,只能小圆片放在大圆片上,不能反。计算结果放在连续地址列,指针数就是移动的次数,三个塔之间的移动的方式一共六种,A—B,A—C,B—C,B—A,C—A,C—B,在地址中只要以代码的形式例如
  1,2,3,4,5,6,就行,
  计算的结果在连续地址中,地址存的六种移动方式的次序,最终能完全实现由A到B的移动。
  地址的长度为:2的N次方-1,也就是需要移动的次数,
  哪位高人能试试,不一定要用代码,把算法详细讲解也可以。
  ......... 以下是对《简单的编程,谁能试试?》的回复:   
匿名回复:
    
  难道真的工控网上没有高手了么
  真的没有人会么?
  还是高手在默默的等待啊,
  
  
匿名回复:
    如果真的没有人会,
  那我真的是很遗憾了,
  
  
  
匿名回复:
    我菜故我不能
匿名回复:
    出自http://www.zjedu.org/xdjyjs/90/346.htm
  
  例2 河内塔问题。
    这是一个古老传说中的问题:有3个高塔与64个直径互不相同的环,开始时这些环按尺寸大小依次堆在一个塔上,最大的在最下面。由一些僧侣把初始塔上的环移到另外一个塔上,每天只能移动一个,且移好后必须仍旧使大的在下面,按序堆放,其间可利用第三个塔暂时存放环。传说预言僧侣们完成任务之时,就是世界的末日。我们不知道僧侣们何时开始他们的工作,但可以考虑建立数学模型,借用计算机算出所要用的时间。算法思想是:若僧侣们能把上面的63个环从初始塔依次移到临时塔上,则就可将最大的环移到结束塔上,并依次把其它63个环从临时塔移到结束塔。
    采用Pascal语言编程简略如下:
    Procedure Tower(n: nonneight; start, finish, other: towernames);
    IF n>0 then begin
    Tower (n-1, start, other, finish);
    Writeln (“ move top ring from”, start, “to”, finish);
    Tower (n-1, other, finish, start)
    end;
     上述程序中writeln是一个差分方程,其中W(o)=0是初始条件,W(n)=2n-1是这个差分方程的解。可得河内塔问题的解是W(64)=264-1,大约是1.84×1019天,即约5.05×1014世纪。真是太长的时间了,难怪有“世界末日”的预言。
匿名回复:
    不是不会,只是你要告诉我们用什么机械工具,用手还需要PLC干嘛?
匿名回复:
    真考脑子.好在有GOOGLE.
匿名回复:
    to rickyxu:
  呵呵,你的算法是对的,
  但是,你用的Pascal编的话,但对于软件而言象VB,VC,都是最简单不过的递归算法,应该都会,但是我需要的是形象的PLC语言,它是两种概念,甚至再形象的来讲就是能用PLC把它的实际移动能给控制起来,假设有六个机械手在搬,分别负责6种移动次序,也就是你控制六个DO点的顺序,
  呵呵,谁再想想,试试?
  。。。。。。。。
匿名回复:
    机械手的原理请告诉我,我没见过,或许我能试
  试
  
匿名回复:
    六个机械手,
  六个DO驱动,
  分别代表六种移动方式:
  1、A-B
  2、A-C
  3、B-C
  4、B-A
  5、C-A
  6、C-B
  每次只移动一个,试试看?
  
匿名回复:
    有意思。不知道有没时间限制。
  我刚学plc基本编程,很想试试。
  明天我还来看看。
  如果不急,我的mail:yxw139@sohu.com
  争取考试前交卷行不行?
匿名回复:

本新闻共5页,当前在第11 2  3  4  5  

上一篇: 做工控有钱途吗?面临择业的迷惘
下一: ESD系统的深探