Я пытаюсь сделать программу, чтобы принимать 3 числа в переменные и выводить их в порядке возрастания.Сортировка небольшого количества элементов
Я имею в виду это (пример):
accept num1
accept num2
accept num3
и потом разбирайтесь.
Я пытаюсь сделать программу, чтобы принимать 3 числа в переменные и выводить их в порядке возрастания.Сортировка небольшого количества элементов
Я имею в виду это (пример):
accept num1
accept num2
accept num3
и потом разбирайтесь.
Для очень ограниченного количества предметов простой «обменный вид» будет в порядке. Используйте таблицу с OCCURS, поместите данные в таблицу, а затем продолжайте передавать таблицу, обменивая соседние элементы, пока в проходе таблицы больше нет изменений.
Для трех чисел вы можете рассмотреть что-то вроде этого, что на самом деле не похоже, но даст вам заказ, который вы хотите.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9.
01 NUM2 PIC 9.
01 NUM3 PIC 9.
01 SNUM1 PIC 9.
01 SNUM2 PIC 9.
01 SNUM3 PIC 9.
PROCEDURE DIVISION.
ACCEPT NUM1
ACCEPT NUM2
ACCEPT NUM3
COMPUTE SNUM1 = FUNCTION
MIN
(
NUM1
NUM2
NUM3
)
COMPUTE SNUM2 = FUNCTION
MEDIAN
(
NUM1
NUM2
NUM3
)
COMPUTE SNUM3 = FUNCTION
MAX
(
NUM1
NUM2
NUM3
)
DISPLAY
">"
SNUM1
"<"
DISPLAY
">"
SNUM2
"<"
DISPLAY
">"
SNUM3
"<"
GOBACK
.
При этом на SYSIN (или там, где вы ACCEPT от):
4
2
3
Он будет производить:
>2<
>3<
>4<
Лично я бы что-то вроде этого:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9.
01 NUM2 PIC 9.
01 NUM3 PIC 9.
01 SNUM1 PIC 9.
01 SNUM2 PIC 9.
01 SNUM3 PIC 9.
PROCEDURE DIVISION.
ACCEPT NUM1
ACCEPT NUM2
ACCEPT NUM3
IF (NUM2
LESS THAN NUM1)
MOVE NUM2 TO SNUM1
MOVE NUM1 TO SNUM2
ELSE
MOVE NUM2 TO SNUM1
MOVE NUM1 TO SNUM2
END-IF
EVALUATE TRUE
WHEN NUM3
LESS THAN SNUM1
MOVE SNUM2 TO SNUM3
MOVE SNUM1 TO SNUM2
MOVE NUM3 TO SNUM1
WHEN NUM3
LESS THAN SNUM2
MOVE SNUM2 TO SNUM3
MOVE NUM3 TO SNUM2
WHEN OTHER
MOVE NUM3 TO SNUM3
END-EVALUATE
DISPLAY
">"
SNUM1
"<"
DISPLAY
">"
SNUM2
"<"
DISPLAY
">"
SNUM3
"<"
GOBACK
.
Решает заказ ели t два числа, затем работает там, где должен идти третий. Это эффективно комбинированный обмен/вставка сортировки :-)
Те же результаты, что и выше, конечно.
У COBOL есть глагол SORT, если это то, что вы должны использовать, но это «перебор» для трех предметов.
Мы можем помочь вам, если вы покажете свой код и опишите свою проблему. (Кроме того, есть ли причина, по которой вы отметили как «ibm-midrange», так и «cobol85»? Они не очень хорошо связаны.) – user2338816
У меня нет кода, я еще планирую эту идею. Это просто (я думаю), кто-то вводит 3 числа (как 3 7 и 4) и сортирует программу по номерам по возрастанию (результат: 3 4 7) Вопрос в том, как я могу это сделать, имеет ли COBOL функции для что или что-то? –