Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Выбор области значений индексов



В QBASIC можно изменить порядковый номер первого элемента массива. Первый элемент массива в QBASIC по умолчанию имеет номер ноль, а не 1.

Для этого можно использовать оператор OPTION BASE значение где значение - номер начального элемента массива.

Например:

OPTION BASE 1

DIM C%(100)

Массив целых чисел, определенный в этом примере, состоит из 100

элементов.

QBASIC позволяет явно задавать область изменения индексов массива.

Например:

DIM MON% (1 to 12), DAI (1 to 31).

Использование функций LBOUND и UBOUND.

Эти функции возвращают нижнее LBOUND и верхнее UBOUND значение границ определению измерения массива.

Синтаксис этих функций:

LBOUND (массив [, размерность %)

UBOUND (массив [, размерность %)

где массив - имя массива;

Размерность % - номер измерения массива, для которого эти функции возвращают значение нижней и верхней границы. Для определения индекса первого измерения используется 1, для второго - 2 и т.д. Если номер размерности не указан, по умолчанию подразумевается 1.

Пример

CLS

REM объявление двухмерного массива

DIM a(-5 TO 10, 2 TO 7)

REM вывод границ массива

PRINT

PRINT LBOUND(a, 1);

PRINT UBOUND(a, 1)

PRINT LBOUND(a, 2);

PRINT UBOUND(a, 2)

END

В результате будет напечатано

-5 10

2 7

Эти функции целесообразно использовать в том случае, если число задействованных элементов массива изменяется внутри программы или если необходимо использовать минимальное и максимальное значения индексов для определения области изменения счетчика цикла.

При решении задач с использованием массивов условно можно выделить следующие модули:

Ввод массива → Операции с массивом → Вывод массива

Лабораторная работа №3

Одномерные массивы

Ввод одномерного массива

Пример: Ввести одномерный массив действительных чисел, состоящий из n элементов.

А)

  Рис.2 cls option base 1 input n dim a(n) for i=l to n input a(i) next i

При выполнении этой программы элементы массива вводятся с клавиатуры.

 

Б) При выполнении этой программы элементы массива вводятся из блока данных

dim a ( 1 to n) for i=l to n read a (i) next i data 3.5, 4.6, 7.3   В операторе data должно быть указано n значений. Этот вариант ввода удобен, когда число элементов массива известно заранее иначе, оператор data необходимо обновлять.
    В)    
cls input n dim a (1 to n) for i=l to n a(i)= rnd (i) next i   В данном случае элементы массива генерируются с помощью функции RND.

Если необходимо ввести два или несколько одномерных массивов, то программа может быть:

print " введите массивы а и b"

for i=l to n

input a (i), b(i)

next i.

Вывод одномерного массива

Пример: вывести на печать элементы одномерного массива (массив из 10 элементов.

    Рис.3 Фрагмент программы: for i=l to 10 print a(i) next i  

В этом случае при выполнении программы все элементы массива будут напечатаны в столбец, каждый элемент на отдельной строке.

Если в цикле будет оператор print a (i), (запятая после оператора print), то элемен­ты будут напечатаны по 5 элементов в строке.

Если в цикле будет оператор print a (i); (ставится; ) то элементы массива будут напечатаны в строку.

При выводе двух или более одномерных массивов одного размера удобно вывести их как параллельно расположенные столбцы:

print " массив a", " массив b"

for i= I to n

print a (i), b(i)

next i

Рассмотрим фрагменты отдельных операций с одномерными массивами.

Суммирование элементов массива

Для одномерного массива а= (а1 а2,... аn)

Вычислить

    Рис.4 Фрагмент программы S = 0 For i = 1 to n S = S + a(i) next i

Поэлементное суммирование двух массивов

Для одномерных массивов аi, bi, i = 1, n вычислить ci = ai + bi i = 1, n

    Рис.5 Фрагмент программы rem суммирование векторов for i = 1 to n c(i) = a(i) + b(i) next i    

Суммирование по условию

Вычислить среднее положительных элементов одномерного массива ai (i=1, n)

 
 

 


Если ai > 0

 

 

rem среднее положительных

rem элементов одномерного

rem массива

S = 0: k = 0

for i = l to n

if a( i ) > 0 then

S = S + a(i)

k = k + 1

end if

next i

S2 = S/k

print S2

Рис.6


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 389; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь