Программы для обработки одномерных массивов
Цель работы:приобрести практические навыки в составлении про-грамм для обработки одномерных массивов.
Задание
1. Изучать оператор описания массивов языка Бейсик, правописание индексированных переменных одномерных массивов и особенности их при-менения.
2. Для заданного варианта составить схему алгоритма и реализую-щую его программу для обработки одномерного массива.
3. Произвести на ЭВМ расчеты по разработанной программе для исходных данных приведенных в табл. 5.1.
4. Получить распечатку программы и результатов расчета.
5. Оформить отчет по лабораторной работе.
Указания по выполнению работы
Массивом называется упорядоченная последовательность величий (элементов массива), обозначаемая одним именем. В одномерном массиве положение элемента определяется его номером или индексом массива. Для обозначения элементов одномерного массива в Бейсике служат переменные с индексом вида A(n), где A - имя переменной (массива) образуется с помощью буквы и цифры; n – индекс переменной (массива) может обозначаться числом, простой переменной или арифметическим выражением. Начинаются индексы с 0. Например, A(4) – четвертый элемент массива A; B1(k) – k-й элемент массива B1.
Язык Бейсик не всегда требует объявления массива при использовании его в программе. Если массив содержит 11 элементов, то достаточно одного упоминания имени переменной, чтобы Бейсик автоматически выделил ячейки в памяти ПЭВМ для массива с 11 элементами и присвоил им нулевые зна-чения. Первый элемент массива по умолчанию имеет ноль, а не 1, поэтому последний элемент будет иметь порядковый номер 10.
Если вы хотите работать с большими массивами, необходимо уведомить Бейсик с помощью оператора DIM. Общая форма данного оператора сле-дующая:
DIM имя1 (индекс1) [, имя2(индекс2), …]
где имя1, имя2 – имена массивов переменных; индекс1, индекс2 – размерность массива, выражаемая следующим образом:
[нижний TO] верхний [, нижний TO] верхний …,
где нижний – нижнее значение индекса массива (по умолчанию ноль); верх-ний –верхнее значение индекса массива.
Оператор DIM резервирует в памяти ЭВМ место для описываемого массива. При описании одним оператором DIM нескольких массивов их описания располагаются в строке оператора через запятую. Например, опе-ратор
DIM А(3),В(2)
резервирует в памяти ЭВМ места для четырех элементов А(0),А(1), А(2),А(3) массива А и трех элементов В(0),В(1),В(2) массива В.
Описание всех массивов рекомендуется давать в начале программы, если оно отсутствует, то по умолчанию максимальное значение индекса равно
10.
При программировании следует иметь в виду, что ввод, вывод и обра-ботка массивов выполняются поэлементно и легко реализуются в программах с помощью циклов , позволяющих организовать выбор элементов массива путем изменения их индексов. При этом индексы массивов используются, как правило, в качестве управляющих переменных. Вывод одномерных массивов целесообразно выполнять в строку, сопровождая комментариями.
В качестве примера на рис.5.1 приведены алгоритм и программа фор-мирования одномерного массива В из элементов массива А размером n, удовлетворяющих условию ai > c , i =1,2, …, n .
Программа составлена в общем виде и может использоваться для мас-сивов размером до 20, который задан оператором DIM в строке 20. Размер обрабатываемого массива А вводится в переменную N.
Операторы первого цикла обеспечивают поэлементный ввод массива А. При этом оператор INPUT выполняется N раз (по числу элементов массива) и при каждом его выполнении в цикле значение элемента массива вводится с клавиатуры . Оператор PRINT каждый раз выводит на дисплей запрос о вводе очередного элемента массива.
Операторы второго цикла с целью контроля ввода исходного массива А обеспечивают вывод его элементов на дисплей в плотном формате в одну строку с заголовком МАССИВ А:. Оператор PRINT без списка вывода осу-ществляет возврат каретки после вывода последнего элемента и выхода из цикла Выбор элементов массива А, удовлетворяющих заданному условию формирование из них и вывод элементов массива В совмещены в целях со-кращения программы в третьем цикле. Управляющей переменной I этого цикла является индекс массива А. Индексом формируемого массива B служит переменная К, значение которой до входа в цикл задается равным нулю и увеличивается на единицу при каждом выполнении условия А(I)>С, прове-ряемого в цикле условным оператором IF. Вывод элементов массива В осу-ществляется оператором PRINT в плотном формате в одну строку с заголов-ком МАССИВ В.
Начало
Ввод n,c, массива A
Вывод массива A
k=0, i=1
Нет | ai>c | Да | |
k=k+1 bk=ai
Вывод bk
i=i+1
REM Программа формирования массива
DIM А(20),В(20)
REM Ввод исходных данных
PRINT “Введите значение С=”; INPUT С
PRINT “Введите размер массива A N=” INPUT N
FOR 1=1 ТО N
PRINT “Введите значение A(“;I;”)=”; INPUT A(I)
NEXT I
REM Контрольный вывод массива A PRINT “Массив A:”;
FOR I=1 TO N
PRINT А(I); NEXT I PRINT
REM Формирование и вывод массива B PRINT ”Массив В:”;
К=0
FOR I=1 ТО N IF A(I) > C THEN К=К+1 B(К)=А(I) PRINT В(К); END IF
NEXT I
END
б)
Да i<=n
Нет
Конец
а)
Рис.5.1. Пример программирования алгоритма формирования одно-мерного массива: а - схема алгоритма; б - его программная реализация.
Таблица 5.1
Варианты заданий к лабораторной работе № 5
№ | Составить программу обработкиодномерного массива А размером n | n | k | ||||
п.п | |||||||
1. | Вычислить произведение всех элементов | - | |||||
2. | Вычислить сумму всех элементов | - | |||||
3. | Удалить k-й элемент и сформировать новый массив размером n-1 | ||||||
4. | Включить дополнительный элемент в k-ю позицию и сформировать | ||||||
новый массив размером n+1 | |||||||
5. | Переставить местами k-й и (k+1)-й элементы и образовать новый массив | ||||||
6. | Определить максимальный элемент | - | |||||
7. | Определить минимальный элемент | - | |||||
8. | Определить количество положительных элементов | - | |||||
9. | Определить количество отрицательных элементов | - | |||||
10. | Сформировать новый массив, состоящий из положительных элементов | - | |||||
11. | Сформировать новый массив, состоящий из отрицательных элементов | - | |||||
12. | Определить максимальный из отрицательных элементов | - | |||||
13. | Определить минимальный из положительных элементов | - | |||||
14. | Определить число элементов, превосходящих по величине первый | - | |||||
элемент | |||||||
15. | Сформировать новый массив, состоящий только из элементов, превос- | - | |||||
ходящих по величине первый элемент | |||||||
16. | Сформировать новый массив, состоящий только из элементов, не пре- | - | |||||
восходящих по величине первый элемент | |||||||
17. | Сформировать новый массив В, элементы которого bi = kai , i =1,…, n | 3,14 | |||||
18. | Сформировать новый массив В, элементы которого | 5,74 | |||||
bi = kai , i =1,…, n / 2и bi =2kai , i = n / 2+i ,…, n | |||||||
19. | Выполнить сортировку массива так, чтобы a1 > a2 > …> an | - | |||||
20. | Выполнить сортировку массива так, чтобы a1 < a2 < …< an | - | |||||
№ | Из двух одномерных массивов А и В одного размера n сформировать | n | k | ||||
п.п | массив C, элементы которого равны: | ||||||
21. | ci | = ai | +kbi | , i =1,…, n | 3,14 | ||
22. | ci | = kai | −bi | , i =1,…, n | 1,57 | ||
23. | ci | = aibi | +k , i =1,…, n | 6,28 | |||
24. | ci | = kai | / bi | , i =1,…, n | 2,56 | ||
25. | ci | = k (ai + bi ) /(ai −bi ) , i =1,…, n | 8,34 | ||||
26. | ci | = ai | +bi | , i =1,…, n | - | ||
27. | ci | = ai | −bi | , i =1,…, n | - | ||
28. | ci | = ai bi , i =1,…, n | 6,28 | ||||
29. | ci | = ai | / bi , i =1,…, n | 2,56 | |||
30. | ci | = k (ai +bi ) / ai bi , i =1,…, n | 8,34 |
Примечание. Значения элементов массивов во всех вариантах заданий выби-раются произвольно
Лабораторная работа №6