QBASICBOOK.ru: сайт про QB64

Опубликовано: 2018-07-01 08:00:00

Решение задач на вектора. Часть первая. Поиск максимального элемента

Предлагаю решить нашу первую задачу на одномерный массив (вектор).

Задача. Дан одномерный массив (вектор) A(10), найти максимальный элемент MAX, одномерный массив заполнить случайным образом.

Итак, давайте рассуждать – что от нас хотят?

  1. Должен быть одномерный массив из 10 элементов.
  2. Массив необходимо заполнить случайными числам.
  3. После этого находим значение максимального элемента и записываем его в отдельную переменную.
  4. Вывести переменную с максимальным элементом на экран.

Сказано – сделано. Делаем начало программы и объявление массива:


  1. RANDOMIZE TIMER
  2. CONST N = 10
  3. DIM A(N)

Теперь попробуем заполнить массив случайными числами. Нам нужно присвоить каждой ячейке массива случайное число. Будем писать десять раз присвоение? Как бы не так! У нас же есть FOR! Делаем так:


  1. A = 0: B = 10
  2. FOR I = 1 TO N
  3.     A(I) = INT((B - A + 1) * RND + A)
  4.     PRINT USING "##  "; A(I);
  5. NEXTPRINT

Когда оператор повторений FOR будет выполняться первый раз, он в I занесет 1. Первый элемент массива A получит значение от 0 до 10 (о чем говорят две переменные A и B). И так далее. Мы заполнили массив.

Теперь нужно искать максимальный элемент. Как? Берем переменную MAX и присваиваем ей значение первого элемента. Берем первый элемент массива и сравниваем его с MAX. Если MAX меньше первого элемента, то значение первого заносится в MAX. И так проверяем 10 элементов. В конце у нас будет значение максимальное значение из десяти элементов в переменной MAX.


  1. 'POISK MAX
  2. MAX = A(1)
  3. FOR I = 1 TO N
  4.     IF (A(I) > MAX) THEN MAX = A(I)
  5. NEXT
  6. PRINT "MAKSIMALNYY ELEMENT:"; MAX

Вот и всё. Теперь в переменой MAX у нас самое большое значение. Нам остается только собрать всю задачу в кучу.


  1. RANDOMIZE TIMER
  2. CONST N = 10
  3. DIM A(N)
  4. A = 0: B = 10
  5. FOR I = 1 TO N
  6.     A(I) = INT((B - A + 1) * RND + A)
  7.     PRINT USING "##  "; A(I);
  8. NEXTPRINT
  9. 'POISK MAX
  10. MAX = A(1)
  11. FOR I = 1 TO N
  12.     IF (A(I) > MAX) THEN MAX = A(I)
  13. NEXT
  14. PRINT "MAKSIMALNYY ELEMENT:"; MAX

Рисунок 1 – Поиск максимального элемента в одномерном массиве

Рисунок 1 – Поиск максимального элемента в одномерном массиве

Рисунок 2 – Вывод максимального элемента на экран

Рисунок 2 – Вывод максимального элемента на экран

Еще раз проговорим алгоритм работы программы:

  1. Заведем вспомогательную переменную МАХ и присвоим ей значение первого элемента массива А(1).
  2. Сравним МАХ со следующим элементом массива:

ЕСЛИ А(I) > MAX

ТО ячейке МАХ присвоим А(I)

ИНАЧЕ перейдем к следующему элементу.

Смысл должен быть вам понятен. Задачи на двумерные массивы будут похожи на эти

Задача. Удвоить все элементы произвольного массива A из 10 элементов, заданного на интервале [-50,50]. Вывести на экран оба массива (первоначальный A и удвоенный массив A).

Примечание: Поскольку массив произвольный, то лучше заполнить его случайным образом.


  1. RANDOMIZE TIMER
  2. CONST N = 10 'RAZMER MASSIVA
  3. DIM A(N)
  4. A = -50: B = 50
  5. FOR I = 1 TO N
  6.     A(I) = INT((B - A + 1) * RND + A)
  7.     PRINT USING "##### "; A(I);
  8. NEXTPRINT
  9. FOR I = 1 TO N
  10.     'UVELICHENIE V 2 RAZA
  11.     A(I) = A(I) * 2
  12. NEXT
  13. FOR I = 1 TO N
  14.     'VIVOD IZM. MASSIVA
  15.     PRINT USING "##### "; A(I);
  16. NEXT

Рисунок 3 – Удвоение значений одномерного массива

Рисунок 3 – Удвоение значений одномерного массива 

Рисунок 4 – Вывод результата удвоения значений одномерного массива

Рисунок 4 – Вывод результата удвоения значений одномерного массива

Принцип решения тот же самый, только выполняются другие действия над массивами в теле циклов.

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Ввод-вывод двумерного массива (матрицы)
Следующая статья >
Решение задач на вектора. Часть вторая. Поиск минимального, максимального значения, суммы и произведения элементов

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.