Ответы пользователя по тегу Алгоритмы
  • Как лучше организовать структуру данного кода?

    Все ваши случаи можно представить себе на координатной прямой и сопоставить каждый из них с числом на этой прямой. Например, если A < B < C, то числа будут положительными, а если A > B > C, то отрицательными (A ближе к нулевой отметке, а C — дальше; чем X дальше от нуля, тем его абсолютное значение больше).

    A > B > C > X = -7
    A > B > X == C = -6
    A > B > X > C = -5
    A > X == B > C = -4
    A > X > B > C = -3
    X == A > B > C = -2
    X > A > B > C = -1
    0
    X < A < B < C = 1
    X == A < B < C = 2
    A < X < B < C = 3
    A < X == B < C = 4
    A < B < X < C = 5
    A < B < X == C = 6
    A < B < C < X = 7

    Можно написать функцию, которая определит числовой индекс для каждого из этих случаев. Потом передаёте X, A, B и C в эту функцию, получаете числовой индекс конкретного случая и организуете свой код с помощью switch (case_id). Тогда в нём не будет множества условий сравнения 4 чисел, а только номера случаев, соответствующих разным числам на воображаемой координатной прямой.

    Возможно, такая математическая абстракция вам будет нагляднее.

    Ещё вариант: возвращать в такой вспомогательной функции не число, а строковый идентификатор вида "A < X < B < C" или "A > X == B > C". Т. е. возвращаемая функцией строка будет выглядеть так, как бы вы написали условие в понятном для себя виде. Свой рабочий код можно затем точно так же организовать средствами switch, только вместо числовых идентификаторов (которые я описал в начале) нужно использовать строковые (с понятными обозначениями условий) — по ним будет легко понять, какой случай в данный момент обрабатывается вашим кодом.

    Чтобы избежать опечаток в написании строковых идентификаторов, сохраните их в константы и используйте константы вместо строк — их легко вставлять в код, если в вашем редакторе или IDE есть функция автодополнения.
    Ответ написан
    Комментировать