PDA

Просмотр полной версии : Упростить выражение



IIeroniux
28.02.2015, 13:22
День добрый! Помогите решить следующую задачу.

На входе в блок двадцать переменных Х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 строчек кода.

Как можно оптимизировать программу и создать цикл? Тем самым уменьшив программу.

Спасибо.

amn
28.02.2015, 15:00
Можно совместить с сортировкой массива Z. Для этого надо элементы массива Z сделать структурой из двух элементов (значение и порядковый номер) когда отсортируете массив, то порядковые номера структуры будут соответствовать задаче, просто присвоите их выходам.

IIeroniux
02.03.2015, 06:05
Все гениальное просто, огромное спасибо! Даже пример можно не смотреть!!!