На входе в блок двадцать переменных Х1....Х20, вводятся вручную оператором.
В блоке создается массив Z[1] и переменные сортируются в порядке возрастания.
На выходе с блока нужно получить номера переменных в соответствии с их положение в массиве (после сортировки).
Пример на основе пяти входных переменных:
Вход блока
Внутри блока
Выход блока
X1=10
Z[1]=3
A1=4
X2=35
Z[2]=10
A2=1
X3=11
Z[3]=11
A3=3
X4=3
Z[4]=35
A4=2
X5=43
Z[5]=43
A5=5
Вычисление выходных значений А1...А5 можно добиться путем многократных повторений строк кода типа:
IF Z[1]=X1 THEN A1:=1; END_IF;
IF Z[1]=X2 THEN A1:=2; END_IF;
IF Z[1]=X3 THEN A1:=3; END_IF;
IF Z[1]=X4 THEN A1:=4; END_IF;
IF Z[1]=X5 THEN A1:=5; END_IF;
IF Z[2]=X1 THEN A2:=1; END_IF;
IF Z[2]=X2 THEN A2:=2; END_IF;
IF Z[2]=X3 THEN A2:=3; END_IF;
IF Z[2]=X4 THEN A2:=4; END_IF;
IF Z[2]=X5 THEN A2:=5; END_IF;
И т.д. - т.е. получиться 100 строчек кода.
Как можно оптимизировать программу и создать цикл? Тем самым уменьшив программу.
Можно совместить с сортировкой массива Z. Для этого надо элементы массива Z сделать структурой из двух элементов (значение и порядковый номер) когда отсортируете массив, то порядковые номера структуры будут соответствовать задаче, просто присвоите их выходам.
Последний раз редактировалось amn; 28.02.2015 в 16:47.