恭喜,你发布的帖子
发布于 2024-05-29 16:31:50
2楼
FUNCTION_BLOCK UniqueAlphabetArray
VAR
MyCode: ARRAY[0..25] OF CHAR; // 字符类型的数组,下标从0到25,对应26个英文大写字母
AlphabetCount: ARRAY[0..25] OF INT; // 记录每个字母出现的次数
Alphabet: CHAR := 'A'; // 当前处理的字母
Index: INT; // 当前处理的字母在数组中的索引
i: INT; // 循环变量
END_VAR
// 初始化字母计数数组
FOR i := 0 TO 25 DO
AlphabetCount[i] := 0;
END_FOR;
// 循环遍历MyCode数组,确保每个字母只出现一次
FOR i := 0 TO 25 DO
// 将当前处理的字母放入MyCode数组
MyCode[i] := Alphabet;
// 获取当前处理字母在数组中的索引
Index := BYTE_TO_INT(Alphabet) - BYTE_TO_INT('A');
// 检查当前处理字母是否已经出现过
IF AlphabetCount[Index] = 1 THEN
// 如果已经出现过,则找到下一个未出现的字母
REPEAT
Index := (Index + 1) MOD 26; // 使用取模运算确保索引循环在0到25之间
Alphabet := CHAR_TO_BYTE(BYTE_TO_INT('A') + Index); // 更新当前处理的字母
UNTIL AlphabetCount[Index] = 0;
END_IF;
// 标记当前处理字母已经出现过
AlphabetCount[Index] := 1;
// 找到下一个未出现的字母
Index := (Index + 1) MOD 26; // 使用取模运算确保索引循环在0到25之间
Alphabet := CHAR_TO_BYTE(BYTE_TO_INT('A') + Index); // 更新当前处理的字母
END_FOR;
请填写推广理由:
分享
只看
楼主