Линейный массив: поиск элементов с заданными свойствами, сортировка - QBasic

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, прошу совета, как сократить программу, очень уж громоздко получилось С одной стороны, и хочется всё как-нибудь в один-два цикла уместить, а не в лобуду, которая получилась, с другой - как ни пробую, теряю содержимое ячеек, а значит, фейлюсь. Задача простенькая: дана линейная табличка 4, -9, 45, 7, -67, -3, 29, 15, -4, 3. Надо напечатать первые 10 элементов, подсчитать их сумму и произведение, кол-во положительных и отрицательных элементов, определить максимальный и минимальный элементы массива. Надо ещё их потом упорядочить по возрастанию, ну да до этого ещё дойти надо, мне бы получившееся сначала свернуть по-человечески. Только не ругайте сильно, несколько месяцев к компилятору не подходила
Листинг программы
  1. CLS
  2. DATA 4, -9, 45, 7, -67, -3, 29, 15, -4, 3
  3. DIM E (1 TO 10) AS INTEGER
  4. FOR I=1 TO 10
  5. ____READ E(I)
  6. ____? E(I);
  7. NEXT I
  8. S=0: P=1
  9. FOR I=1 TO 10
  10. ____S=S+E(I): P=P*E(I)
  11. NEXT I
  12. ? "Сумма равна";S;", а произведение";P
  13. OTR=O: POL=0
  14. FOR I=1 TO 10
  15. IF E(I)<0 THEN OTR=OTR+1
  16. IF E(I)>0 THEN POL=POL+1
  17. NEXT I
  18. ? "Кол-во отриц-х чисел равно";OTR;", а положит-х";POL
  19. MAX=E(1); MIN=E(1)
  20. FOR I=1 TO 10
  21. IF MAX<E(I) THEN MAX=E(I)
  22. IF MIN>E(I) THEN MIN=E(I)
  23. NEXT I
  24. ? "MAX=";MAX;", MIN=";MIN
  25. END

Решение задачи: «Линейный массив: поиск элементов с заданными свойствами, сортировка»

textual
Листинг программы
  1. DATA 4,-9,45,7,-67,-3,29,15,-4,3
  2. FOR i = 0 TO 9
  3.     READ a(i): PRINT a(i);
  4. NEXT
  5. p# = 1: PRINT
  6. FOR i = 0 TO 9
  7.     k = i: t = a(i)
  8.     FOR j = i + 1 TO 9
  9.         IF a(j) < t THEN k = j: t = a(j)
  10.     NEXT
  11.     SWAP a(i), a(k): PRINT a(i);
  12.     sg = sg - (a(i) >= 0)
  13.     s = s + a(i): p# = p# * a(i)
  14. NEXT
  15. PRINT CHR$(10); "max = "; a(9), , "min = "; a(0)
  16. PRINT "sum = "; s, , "p = "; p#
  17. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы