回复:用SCL语言编写一个特殊的冒泡程序

KevinX

  • 帖子

    23
  • 精华

    0
  • 被关注

    18

论坛等级:游士

注册时间:2011-05-18

普通 普通 如何晋级?

发布于 2015-12-05 22:35:11

11楼

展开查看
以下是引用RENHQ在2015-12-04 13:29:03的发言 >7楼

还从来没用过SCL呢,正好学习一下,结合着帮助和手册,试着编了编程序,发现会SCL确是比STL要好用,主要现在还不会...捣鼓了一上午,出现各种错误啊。

不怎么做程序,脑子都不转悠了,弄个冒泡法,在那竟然都绕不过来了,还好实现了

不知道还有更简单的程序没,请指点~


//*******************定义数据结构***************//

TYPE UDT100

    STRUCT  

        NUM:    INT;

        DATA:   REAL;

    END_STRUCT;

END_TYPE


FUNCTION_BLOCK FB100


//*****************INPUT***********************//

VAR_INPUT

    IN:         ARRAY[0..5] OF UDT100;

END_VAR            


//****************OUT***********************//

VAR_OUTPUT

    OUT:        ARRAY[0..5] OF UDT100;

END_VAR

//*****************TEMP*************************//

VAR

    MIDE:       ARRAY[0..5] OF UDT100;

    TEMP1:      INT;

    TEMP2:      REAL;

    INDEX:      INT;

    INDEX2:     INT;

END_VAR


BEGIN

//复制输入数据到临时地址

FOR INDEX:=0 TO 5 BY 1 DO

    MIDE[INDEX].DATA    :=  IN[INDEX].DATA;

    MIDE[INDEX].NUM     :=  IN[INDEX].NUM;

END_FOR;

//开始冒泡法排序

   FOR INDEX:= 0 TO 5 BY 1 DO

        FOR INDEX2:= 0 TO 5 BY 1 DO

            IF MIDE[INDEX2].DATA    >=  MIDE[INDEX2+1].DATA THEN

                TEMP2               :=  MIDE[INDEX2+1].DATA;

                MIDE[INDEX2+1].DATA :=  MIDE[INDEX2].DATA;

                MIDE[INDEX2].DATA   :=  TEMP2;

                TEMP1               :=  MIDE[INDEX2+1].NUM;

                MIDE[INDEX2+1].NUM  :=  MIDE[INDEX2].NUM;

                MIDE[INDEX2].NUM   :=  TEMP1;

            END_IF;

        END_FOR;

   END_FOR;

//输出结果

FOR INDEX:=0 TO 5 BY 1 DO

    OUT[INDEX].DATA    :=  MIDE[INDEX].DATA;

    OUT[INDEX].NUM     :=  MIDE[INDEX].NUM;

END_FOR;


END_FUNCTION_BLOCK


你这个我看懂了,非常感谢你!!

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。