Показано с 1 по 3 из 3

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

  1. #1

    По умолчанию Упростить выражение

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

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

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

    Спасибо.

  2. #2
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

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

  3. #3

    По умолчанию

    Все гениальное просто, огромное спасибо! Даже пример можно не смотреть!!!

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •