Линейный массив: поиск элементов с заданными свойствами, сортировка - QBasic
Формулировка задачи:
Доброго времени суток,
прошу совета, как сократить программу, очень уж громоздко получилось
С одной стороны, и хочется всё как-нибудь в один-два цикла уместить, а не в лобуду, которая получилась, с другой - как ни пробую, теряю содержимое ячеек, а значит, фейлюсь.
Задача простенькая:
дана линейная табличка 4, -9, 45, 7, -67, -3, 29, 15, -4, 3.
Надо напечатать первые 10 элементов, подсчитать их сумму и произведение, кол-во положительных и отрицательных элементов, определить максимальный и минимальный элементы массива.
Надо ещё их потом упорядочить по возрастанию, ну да до этого ещё дойти надо, мне бы получившееся сначала свернуть по-человечески.
Только не ругайте сильно, несколько месяцев к компилятору не подходила
Решение задачи: «Линейный массив: поиск элементов с заданными свойствами, сортировка»
textual
Листинг программы
DATA 4,-9,45,7,-67,-3,29,15,-4,3 FOR i = 0 TO 9 READ a(i): PRINT a(i); NEXT p# = 1: PRINT FOR i = 0 TO 9 k = i: t = a(i) FOR j = i + 1 TO 9 IF a(j) < t THEN k = j: t = a(j) NEXT SWAP a(i), a(k): PRINT a(i); sg = sg - (a(i) >= 0) s = s + a(i): p# = p# * a(i) NEXT PRINT CHR$(10); "max = "; a(9), , "min = "; a(0) PRINT "sum = "; s, , "p = "; p# PRINT "positive = "; sg, "negative = "; 10 - sg
Объяснение кода листинга программы
В этом коде представлен сортировочный алгоритм для линейного массива. Вот список действий, которые он выполняет:
- Массив
a
объявлен размером 10. - В цикле
FOR
сi
от 0 до 9 включительно считываются элементы массиваa
и выводятся на экран. - В начале второго цикла
FOR
переменнойk
присваивается значениеi
, а переменнойt
— текущий элемент массиваa(i)
. - Во внутреннем цикле
FOR
сj
отi + 1
до 9 (то есть отi + 1
до9
) проверяется, есть ли элементa(j)
меньше текущего элемента массиваt
. Если такой элемент найден, то переменнойk
присваивается индекс этого элемента, а переменнойt
— значение этого элемента. - После внутреннего цикла
FOR
выполняется обмен элементов массиваa
с индексамиi
иk
. - Выводится отсортированный элемент массива
a(i)
. - Переменной
sg
присваивается единица, если элементa(i)
больше или равен нулю, и ноль в противном случае. - Переменной
s
присваивается сумма всех отсортированных положительных элементов массиваa
. - Переменной
p#
присваивается произведение всех отсортированных элементов массиваa
. - Выводится сообщение с максимальным элементом массива
a(9)
, минимальным элементом массиваa(0)
, суммой положительных элементов массиваs
и произведением всех элементов массиваp#
. - Выводится сообщение с количеством положительных элементов массива
sg
и количеством отрицательных элементов10 - sg
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д