Линейный массив: поиск элементов с заданными свойствами, сортировка - 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

Объяснение кода листинга программы

В этом коде представлен сортировочный алгоритм для линейного массива. Вот список действий, которые он выполняет:

  1. Массив a объявлен размером 10.
  2. В цикле FOR с i от 0 до 9 включительно считываются элементы массива a и выводятся на экран.
  3. В начале второго цикла FOR переменной k присваивается значение i, а переменной t — текущий элемент массива a(i).
  4. Во внутреннем цикле FOR с j от i + 1 до 9 (то есть от i + 1 до 9) проверяется, есть ли элемент a(j) меньше текущего элемента массива t. Если такой элемент найден, то переменной k присваивается индекс этого элемента, а переменной t — значение этого элемента.
  5. После внутреннего цикла FOR выполняется обмен элементов массива a с индексами i и k.
  6. Выводится отсортированный элемент массива a(i).
  7. Переменной sg присваивается единица, если элемент a(i) больше или равен нулю, и ноль в противном случае.
  8. Переменной s присваивается сумма всех отсортированных положительных элементов массива a.
  9. Переменной p# присваивается произведение всех отсортированных элементов массива a.
  10. Выводится сообщение с максимальным элементом массива a(9), минимальным элементом массива a(0), суммой положительных элементов массива s и произведением всех элементов массива p#.
  11. Выводится сообщение с количеством положительных элементов массива sg и количеством отрицательных элементов 10 - sg.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы