Исключить два наименьших по абсолютной величине элемента из массива - QBasic
Формулировка задачи:
Дан массив R из N элементов, исключить два наименьших по абсолютной величине элемента. Результат распечатать в виде:
Исходный массив :
Число элементов :
Два наименьших элемента:
Новый массив :
Решение задачи: «Исключить два наименьших по абсолютной величине элемента из массива»
textual
Листинг программы
- DECLARE SUB SDV (a!(), k!, n!)
- CLS
- RANDOMIZE TIMER
- CONST n = 14
- DIM R(1 TO n)
- FOR i = 1 TO n
- R(i) = INT(40 * RND) - 20
- PRINT R(i);
- NEXT
- PRINT : PRINT
- PRINT "N ="; n
- min = ABS(R(1))
- ind = 1
- FOR i = 1 TO n
- M = ABS(R(i))
- IF min > M THEN
- min = M
- ind = i
- END IF
- NEXT
- IF ind <> 1 THEN
- min2 = ABS(R(1))
- ind2 = 1
- ELSE
- min2 = ABS(R(2))
- ind2 = 2
- END IF
- FOR i = 1 TO n
- IF i <> ind THEN
- M = ABS(R(i))
- IF min2 > M THEN
- min2 = M
- ind2 = i
- END IF
- END IF
- NEXT
- PRINT "R("; ind; ") ="; R(ind)
- PRINT "R("; ind2; ") ="; R(ind2)
- IF ind < ind2 THEN
- CALL SDV(R(), ind2, n)
- CALL SDV(R(), ind, n - 1)
- ELSE
- CALL SDV(R(), ind, n)
- CALL SDV(R(), ind2, n - 1)
- END IF
- R(n) = 0
- R(n - 1) = 0
- FOR i = 1 TO n - 2
- PRINT R(i);
- NEXT
- END
- SUB SDV (a(), k, n)
- FOR i = k TO n - 1
- a(i) = a(i + 1)
- NEXT i
- END SUB
Объяснение кода листинга программы
Код выполняет следующие действия:
- Создает массив рандомных чисел от -20 до 20 и выводит его на экран.
- Находит минимальное значение в массиве по модулю и индекс этого значения.
- Если индекс первого минимального значения не равен 1, то ищет второе минимальное значение.
- Выводит на экран два наименьших по модулю значения из массива.
- Если первое минимальное значение больше второго, то меняет их местами с помощью подпрограммы SDV.
- Удаляет из массива первое и второе минимальные значения, заменяя их на 0.
- Выводит на экран оставшиеся значения массива, кроме двух последних, которые заменены на 0.
- Подпрограмма SDV используется для удаления элементов из массива, заменяя их на следующие элементы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д