龙空技术网

西门子SCL语言中如何求—任意长度数组的最大值和平均值

自动化小杨 294

前言:

眼前大家对“数据结构求最大值最小值的方法是什么”大致比较重视,朋友们都需要了解一些“数据结构求最大值最小值的方法是什么”的相关资讯。那么小编同时在网上搜集了一些关于“数据结构求最大值最小值的方法是什么””的相关文章,希望同学们能喜欢,兄弟们快快来了解一下吧!

原码如下:

备注:本程序的数组输入索引是必须从0开始,本代码已通过测试,拷贝即可使用IF IS_ARRAY(#in_array) THEN//判断是否是数组#arr_length := UDINT_TO_DINT(CountOfElements(#in_array)); //找到数组的长度,函数返回值类型是UDINT,要转成DINT

IF #arr_length < #max_length THEN //如果输入的数组的长度小于设定的最大长度 则进行以下判断//**************************判断数组是整数进行计算***************************************

IF TypeOfElements(#in_array) = Int THEN //判断输入数组的类型

VariantGet(SRC := #in_array,

DST => #arr_int_temp);

#max_number_temp_int := #arr_int_temp[0]; //把索引为0的数认为是最大值

#max_index_temp := 0; //把0索引存起来

FOR #i := 0 TO #max_length - 1 DO //循环 从最小索引开始,到最大索引结束

IF #max_number_temp_int < #arr_int_temp[#i] THEN //如果最大值小于后面索引的值

#max_number_temp_int := #arr_int_temp[#i]; //则把后面索引的值存入最大值变量里

#max_index_temp := #i; //再把索引存起来

END_IF;

#sum := #sum + #arr_int_temp[#i];

END_FOR;

VariantPut(SRC := #max_number_temp_int,

DST := #max_out); //把最大值输出 int

#max_index := #max_index_temp; //把最大值的索引输出

#avg := #sum / #arr_length;

//*******************************如果数组是浮点进行计算*********************************

ELSIF TypeOfElements(#in_array) = Real THEN //判断输入数组的类型

VariantGet(SRC := #in_array,

DST => #arr_real_temp); //把输入的数组传入到内部数组进行处理

#max_number_temp_real := #arr_real_temp[0]; //把索引为0的数认为是最大值

#max_index_temp := 0; //把0索引存起来

FOR #i := 0 TO #max_length - 1 DO //循环 从最小索引开始,到最大索引结束

IF #max_number_temp_real < #arr_real_temp[#i] THEN //如果最大值小于后面索引的值

#max_number_temp_real := #arr_real_temp[#i]; //则把后面索引的值存入最大值变量里

#max_index_temp := #i; //再把索引存起来

END_IF;

#sum := #sum + #arr_real_temp[#i];

END_FOR;

VariantPut(SRC := #max_number_temp_real,

DST := #max_out); //把最大值输出 real

#max_index := #max_index_temp; //把最大值的索引输出

#avg := #sum / #arr_length;

END_IF;

ELSE

#message := 'fault'; //如果输入的数组长度超过200个,那就报错

END_IF;

END_IF;

标签: #数据结构求最大值最小值的方法是什么