Исключить два наименьших по абсолютной величине элемента из массива - 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 PRINT 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) PRINT 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 используется для удаления элементов из массива, заменяя их на следующие элементы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д