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


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



Пример 1 Рассчитать функцию Т по формуле

Т при а = 2, 34

для пяти значений аргумента х1=0, 1; х2=3, 5; х3=0, 01; х4=-14; х5=3.

Все значения функции T сохранить в памяти компьютера. Дополнительно найти произведение четных элементов массива T для заданных значений хi.

Программа

 

CLS

REM Программа массив-строка

DIM X[5], T[5]

A = 2.34: P=1

FOR I=1 TO 5

INPUT X[I]

T[I]=(X[I]^2+SIN(X[I])^2)/SQR(X[I]*A+1)

PRINT " T[" I]="; T[I], " X[" I" ]="; X[I]

IF INT((I/2)-I/2< 0 GOTO L

P=P*T[I]

L: NEXT I

PRINT " P="; P

END

Описание программы:

После очистки экрана и ввода названия программы оператором DIM X[5], T[5] резервируется память для шести элементов массива Х и шести элементов массива Т (счёт индексов с 0, при этом ячейки для X[0] и T[0] использоваться не будут, т.к. индекс I начинается с единицы).

Величине А присваивается значение 2, 34 и первому значению произведения Р присваивается 1.

Оператором FOR… первому значению I присваивается 1, затем оператором INPUT X[I] с клавиатуры вводится X[1]= 0.1, для этого значения элемента рассчитывается T[1]=f (X[1], A) и распечатываются величины Т[1] и Х[1].

В строке IF INT((I/2)-I/2< 0 проверяется чётность индекса I - номера элемента массива Здесь функция INT(…) отбрасывает дробную часть элемента, поэтому для I=1 получим INT(1/2) – 1/2 или 0 – 0, 5 = - 0, 5 < 0, т.е. условие IF выполняется, программа оператором GOTO переходит по метке L к оператору NEXT I, а в произведение P=P*T[I] нечётный элемент T[I] не попадает.

Оператор NEXT I возвращает цикл к оператору FOR…, где I присваивается следующее значение 2, затем вводится X[2]= 3.5, вычисляется T[2]=f (X[2], A) и распечатывается вместе с Х[2]. Снова выполняется проверка на чётность, теперь INT((2/2)-2/2 даёт значение 0, а это не < 0, т.е. условие не выполняется, поэтому программа переходит к следующему оператору P=P*T[I], где первое значение Р=1 умножается на чётный элемент Р[2]. Затем оператор NEXT снова возвращает вычислительный процесс на начало цикла FOR… и так далее, до I=5. Когда все пять элементов функции T[I]

будут рассчитаны, а её чётные значения перемножены в произведении Р, оператор PRINT " P="; P распечатывает его на экране и END – конец программы.

Двумерные массивы – матрицы. Обработка массивов

Пример 2 Вычислить сумму элементов массива А[3, 4]

Программа

CLS

REM Программа массив-матрица

DIM А[3, 4]: S=0

FOR I=1 TO 3

FOR J=1 TO 4

INPUT A[I, J]

S=S+A[I, J]

NEXT J

NEXT I

? " S="; S

END

Описание программы:

После задания размерности массива (4х5=20 ячеек) оператором DIM А[3, 4] и ввода первого значения сумы S=0 открывается цикл по номеру строки массива I, первое значение I=1, затем открывается вложенный цикл по номеру столбца массива J и присваивает первому J значение 1, т.е. в массиве указывается элемент первой строки первого столбца А[1, 1]. Оператором INPUT A[I, J] вводится элемент А[1, 1], т.е. число 9, затем оно складывается с первым значение S=0, т.е. S=0+9=9.

Оператор NEXT J возвращает программу к своему FOR…, где J становится равным 2 (индекс строки I ещё равен 1), далее вводится элемент A[1, 2], равный -4, он прибавляется к предыдущему S, т.е. получается S=9+(-4) = 5 и т.д. Нетрудно заметить, что при такой организации вложения циклов элементы массива А считываются построчно – 1-я строка I проходится по всем столбцам J, затем 2-я строка и т.д. После перебора построчно всех элементов значение накопленной суммы S выводится на экран и программа завершается.

 

Пример 3 Вычислить произведение элементов главной диагонали массива А[4, 4]

 

Программа

CLS

REM Программа матрица -ввод, обработка

DIM А[4, 4]: Р=1

FOR I=1 TO 4 ' Блок ввода:

FOR J=1 TO 4 ' ввод всех

INPUT A[I, J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

I=1: J=1 ' обработка

m14: P=P*A[I, J] ' введённых

I-I+1: J=J+1 ' элементов

IF I< =4 THEN m14 ' массива

? " P="; Р '

END

Описание программы:

После задания размерности массива и присвоения начальному произведению Р значения 1 (DIM А[4, 4]: Р=1) во вложенном цикле по I и J вводятся все элементы матрицы (построчно), затем введённый массив обрабатывается, в данном случае вычисляется произведение главной диагонали.

Поскольку в главной диагонали задействованы только элементы А11, А12, А21, А22, то можно заметить, что для них индексы I и J изменяются (увеличиваются на 1) одновременно, поэтому цикл нужно организовать вручную, с помощью оператора IF…. Для этого присваиваем I и J значе-

ния 1, тем самым получим элемент A[1, 1], потом умножаем его на предыдущее значение Р=1, затем увеличиваем I и J на 1 и выполняем проверку – если I ещё меньше 4, то программа возвращается по метке m14 к увеличению произведения, если I уже больше 4, т.е. программа вышла за пределы матрицы, то Р распечатывается и программа заканчивается.

Проверка на выход из размеров матрицы могла бы быть организована и по J< =4, это некритично.

Особенностью программы является то, что она состоит из двух частей – ввод массива в память и обработка массива, уже находящегося в ОЗУ компьютера. В примерах 1 и 2 элемент массива вводился и сразу обрабатывался согласно заданию ( найти произведение чётных элементов, найти сумму всех элементов). Данная программа является универсальной, т.к. этап ввода массива в память должен выполняться всегда, а виды обработки могут быть в каждой задаче разными (см. примеры 4 и 5).

 

Пример 4 Вычислить сумму и количество отрицательных элементов второго и третьего столбцов массива А[4, 4] из примера 3.

Программа

CLS

DIM А[4, 4]: S=0: t=0

FOR I=1 TO 4 ' ввод

FOR J=1 TO 4 ' всех

INPUT A[I, J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

FOR I=1 TO 4 ' задание индексов (номеров) строк с 1-й по 4-ю

FOR J=2 TO 3 ' задание номеров столбцов, только 2-го и 3-го

IF A[I, J] < 0 THEN S=S+A[I, J]: t=t+1 ' вычисл. суммы отриц.

' эл-тов A[I, J] массива и их количества t

NEXT J

NEXT I

? " S="; S, " t="; t ' вывод S и t

END

Описание программы:

После объявления размерности массива оператором DIM А[4, 4] задаются начальное значение суммы отрицательных элементов (S=0) и счётчика t элементов в сумме (t=0).

Блок ввода выполнен аналогично, как и в примере 3 для всех элементов матрицы. В блоке выполнения для отбора из всей матрицы только элементов 2-го и 3-го столбцов цикл выборки организован для индексов I=1…4 и J = 2 и

3. Если элемент A[I, J] < 0, то он прибавляется к предыдущей сумме S и t увеличивается на 1, если =0 или положительный, то выполняется переход к следующему элементу.

 

Пример 5 Найти максимальный и минимальный элементы четвёртой строки массива А[4, 4] из примера 3.

Программа

CLS

DIM А[4, 4]

FOR I=1 TO 4 ' ввод

FOR J=1 TO 4 ' всех

INPUT A[I, J] ' элементов

NEXT J ' массива

NEXT I ' в ОЗУ

max = А[4, 1] ' присвоение переменной max значения элемента A[4, 1]

min= А[4, 1] ' присвоение переменной min значения элемента A[4, 1]

FOR J=1 TO 4 ' задание номеров столбцов 1…4

IF A[4, J] > max THEN max = A[4, J] ' сравнение max с текущим A[4, J]

и присвоение max его значения, если оно > max

IF A[4, J] < min THEN min = A[4, J] ' сравнение min с текущим A[4, J]

NEXT J ' и присвоение min его значения, если оно < min

? " max="; max, ? " min="; min ' вывод на экран max и min

END

Описание программы:

Программа аналогична предыдущей, но в блоке обработки зафиксирована строка 4 с помощью переменной A[4, J] (цикл по I не нужен), а элементы строки перебираются с помощью цикла по J. Для определения максимального элемента 4-й строки введена переменная max, которой присвоено значение А[4, 1] - первого элемента в 4-й строке (может быть присвоено значение любого элемента этой строки). Далее новой переменной min присваивается значение того же А[4, 1] (может быть любой элемент строки). В цикле FOR… элементы 4-й строки перебираются и, если какой-то из них окажется больше, чем max, то переменной max присваива-

ется его значение. В следующей строке элементы проверяются на минимум - если какой-то из них окажется меньше, чем min, то переменной min присваивается его значение По окончании цикла значения max и min распечатываются на экране.

3 Контрольные вопросы

1 Что такое массив данных?

2 Какого назначение оператора DIM?

3 Как описываются одномерные и двумерные массивы?

4 Объясните организацию циклов, содержащих индексированные

переменные.

5 Как задать обработку элементов только 2-го столбца?

6 Как задать обработку элементов, расположенных ниже главной диагонали?

7 Как определить максимальный элемент массива?

8 Как определить нечётные элементы массива?

Задания

4.1. Рассчитать значения функции согласно своему варианту (№ компьютера в аудитории). Предусмотреть сохранение в памяти вычисленных значений функции.

№ вар Функция, массив Задание
y =(1+| x | ); x {7; 1; 2; -3; -1; 5; -18} Найти максимум и сумму положительных элементов массива
Найти минимум и сумму отрицательных элементов массива А
S =lg (3│ sin(x)│ +x x {-5; 4; 0; 1; 3.5; -10; 14} Количество и сумму элементов, меньших 2
u =ln │ 3sin x +1│; x {-1; 2; 4.1; -5; -22; 17} Наибольшее и наименьшее значения функции
Найти сумму и количество элементов A[I, J] > 1
r =3.4sin(5+3.1t ); t {-1.1; -0.8; 4; -1; -3; 5} Произведение элементов t с нечет ными номерами и их количество
q =3.3sin x - 1+sin x; x {1; 4; 3; 7; -51; 32; -2} Номер первого отрицательного элемента массива q
Найти минимум и сумму положительных элементов массива
Количество и сумму элементов, больших 2
d =ln │ x +sin х4│; x {0.75; -3.1; 21; -1.7; 3} Количество и произведение элементов, больших -2
       

 

Произведение элементов с чет ными номерами и их количество  
Сумму элементов над главной диагональю и максимальный из них
m =7.3cos x6 – sin3 x; x {1; 4; 3; 7; -51; 32; -2} Номер первого положительного элемента массива m
Произведение отрицательных элементов над главной диагональю и минимальный из них
G =(sin3 x – tg2 x; x {1; 4; 3; 7; -51; 32; -2} Номер первого отрицательного элемента массива G
Сумму положительных элементов под главной диагональю и максимальный из них
Произведение элементов с нечет ными номерами и их количество
a =e x {1.3; 0.2; -4; 3.2; 5; -1} Сумму элементов с чет ными номерами и их количество
Произведение элементов с нечет- ными номерами, большими -2, и их количество
C =arctg(a -3a +2); a {2.7; 3.1; 4.5; -6; 14} Произведение элементов с чет ными номерами и их количество

 

Содержание отчета

1 Название, цель, содержание работы

2 Задание для своего варианта.

3 Программа расчёта

4 Результаты расчётов в среде QB.

5 Письменные ответы на контрольные вопросы.

6 Выводы по работе

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


Поделиться:



Популярное:

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


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