恭喜,你发布的帖子
发布于 2015-12-05 22:35:11
11楼
还从来没用过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
你这个我看懂了,非常感谢你!!
请填写推广理由:
分享
只看
楼主