Лабораторна робота № 8
Обробка одновимірних масивів Мета роботи — оволодіння практичними навичками роботи з одновимірними масивами, особливостями їх вводу та виводу, набуття подальших навичок по організації програм циклічної структури з використанням прийомів програмування.
Теоретична частина
Група змінних, яка має одне загальне ім`я, і її змінні розташовані в порядку зростання їх порядкових номерів (індексів), називається масивом.Кожна змінна в цій групі називається елементом масиву і характеризується двома атрибутами: своїм місцезнаходженням усередині масиву і значенням. В залежності від типу даних масиви можуть бути будь-якого типу — і текстові, і числові. При цьому всі елементи масиву будуть мати однаковий тип. Значення елементам масиву можна присвоювати різними способами:
Проте, якщо масив великий, ця процедура стає довгою та утомлюючою.
1) можна вводити значення з клавіатури: FOR I= 1 TO 10 INPUT B(I) NEXT I 2) можна використовувати оператор DATA і READ: DATA 10,20, 30, 40, 50, 60 FOR I=1 TO 6 READ B(I) NEXT I Цей спосіб зручний і має додаткову перевагу – дані не губляться при повторному виконанні програми. Значення зберігаються в операторі DATA і вводяться в програму один раз – при її написанні. Оператор READ звертається до оператора DATA і присвоює черговій змінній поточне значення з списку.
FOR I=1 TO 10 B(I) = RND (I) NEXT I В даному прикладі використовується тільки спеціальна функція, що генерує випадкові числа. Це одна з функцій, яка використовується при створенні навчальних та ігрових програм. На відміну від попередніх діалектів Бейсику, QBASIC не завжди потребує оголошення масиву при використанні його в програмі. Якщо масив містить менше 11 елементів, достатньо лише одного згадування імені змінної, щоб QBASIC автоматично виділив комірки в пам’яті для масиву з 11-ти елементів і присвоїв їм нульове значення. Перший елемент масиву в QBASIC по умовчанню має індекс нуль, а не 1, тому останній елемент буде мати порядковий номер 10. Дійшовши в робочій програмі до оператора A(1)=3, QBASIC виділить 11 комірок пам’яті і заповнить їх значеннями в наступному порядку:
Якщо ви бажаєте працювати з великими масивами, необхідно повідомити QBASIC з допомогою оператора DIM. Загальна форма оператора DIM наступна: DIM ім¢я1 (індекс1) [ і¢мя2 (індекс2), …] ім¢я1, ім¢я2 – імена масивів змінних; індекс1, індекс2 — розмірність масиву, що виражається наступним чином: [нижній TO ] верхній [,нижній TO ] верхній…, де нижній – нижнє значення індексу масиву (по умовчанню нуль); верхній — верхнє значення індексу масиву. Оператор DIM дозволяє резервувати місце в пам’яті одразу для декількох масивів. Наприклад: DIM A%(15), NAME (20), Z (1 TO 10) Цим оператором ми одночасно:
Оператор DIM може знаходитися в будь-якому місці програми раніше першого звернення до масиву (масивів), які він оголошує. Звичайно всі оператори DIM розміщують на початку програми, що полегшує процес відладки. Якщо ви працюєте з іншими версіями Бейсика і звикли, що перший елемент масиву має номер 1, то в QBASIC ви можете змінювати порядковий номер першого елемента масиву. Для цього можна використовувати спеціальний оператор: OPTION BASE значення, де значення — номер початкового елемента масиву. В QBASIC цей параметр може приймати значення 0 або 1. Зверніть увагу на те, що масив, визначений в наступному прикладі, складається з 100 елементів (замість 101): OPTION BASE 1 DIM Х(100)
Найпростішими задачами на обробку масиву є задачі на визначення його кількісних характеристик, таких, як сума елементів, їх добуток тощо. Розглянемо алгоритм знаходження суми елементів масиву X(N). В ньому можна виділити певні дії, що є характерними для задач визначення кількісних характеристик масиву. В таблиці 8.1. наведені аналогічні операції для знаходження таких кількісних характеристик одновимірного масиву X(N):
Таблиця 8.1.
Завдання 1. В масиві A(M) знайти суму парних елементів, максимальний елемент і його номер.
Програма (Блок-схема представлена на рис. 8.2).
REM Програма1. Одновимірні масиви REM Лабораторна робота №8, задача №1 CLS INPUT "Введіть розмірність масиву"; M DIM A(M) FOR I = 1 TO M INPUT "Введіть елементи масиву"; A(I) NEXT I S = 0 FOR I = 1 TO M IF A(I) / 2 = INT(A(I) / 2) THEN S = S + A(I) NEXT I MAX = A(1) NM = 1 FOR I = 1 TO M IF A(I) > MAX THEN MAX = A(I): NM = I NEXT I PRINT "Сума елементів="; S PRINT "Максимальний елемент=";MAX, "Його номер=";NM END
Завдання 2. Задано масив X(M). Сформувати, використовуючи його елементи, масив Y(M) наступним чином: додатні елементи масиву X розмістити на початку масиву Y; від¢ємні елементи масиву X замінити на середнє арифметичне додатних елементів масиву X і розмістити їх в масиві після додатних; нульові елементи розмістити в кінці масиву Y.
Програма (Блок-схема представлена на рис. 8.3)
REM Програма2. Одновимірні масиви REM Лабораторна робота №8, задача №2 CLS INPUT "Введіть розмірність масиву"; M DIM X(M) S = 0: K = 0 FOR I = 1 TO M I NPUT "Введіть масив"; X(I) IF X(I) > 0 THEN S = S + X(I): K = K + 1 NEXT I SA = S / K: J = 0 PRINT "Середнє арифметичне"; SA PRINT "Сформований масив" FOR I = 1 TO M IF X(I) > 0 THEN J = J + 1 Y(J) = X(I) PRINT Y(J) END IF NEXT I FOR I = 1 TO M IF X(I) < 0 THEN J = J + 1 Y(J) = SA PRINT Y(J) END IF NEXT I FOR I = 1 TO M IF X(I) = 0 THEN J = J + 1 Y(J) = 0 PRINT Y(J) END IF NEXT I END
Контрольні запитання
1. Масиви та їх описання. 2. Використання оператора DIM. 3. Способи присвоєння значень елементам масиву. 4. Призначення оператора OPTION BASE.
Варіанти завдань 1.Скласти алгоритм і програму для знаходження найменшого з додатних чисел заданого масиву А(12). Результат вивести до друку. А=(1,-3,8,0,-4,-7,9,15,0,10,-27,16).
2. Скласти алгоритм і програму для обчислення середнього геометричного значення елементів заданого масиву В(15), що задовольняють умову В(1)<А. Дані задати довільно, результати вивести до друку. Середнє геометричне чисел – це: 3. Скласти алгоритм і програму для розв’язання наступної задачі. Дано два масиву X(5),Y(7). Скласти з них один масив, розмістивши елементи довільним чином. Результат вивести до друку. X=(4, -3, 8, 2, 7); Y=(-5, 12, 9, 0, -1, 6, 6).
4. В заданому масиві В(15) обчислити різницю двох сусідніх елементів і сформувати з них в масив С. Знайти найбільший і найменший по модулю елементи масиву С. Результати вивести на друк. В=(2.5; 3.4; 4.1; 5.9; 6; 7; 0; -4; -3.5; 2; -9; 6; -14; -5; 3.7).
5. Скласти схему алгоритму і програму перетворення масиву Т(15) так, щоб спочатку записати підряд п¢ять перших додатних елементів масиву. Перетворений масив вивести на друк. Т = (-4, 1, 2, 3, -3, -2, 7, 8, 6, -4, 8, 9, -3, 0, 5).
6. Скласти схему алгоритму і програму для заміни в даному масиві Е(18) усіх нульових елементів середнім геометричним значенням усіх додатних елементів масиву. Перетворений масив вивести до друку. Е =(6, 0, 7, 8, 9, 0, 1, 3, 5, 0, -1, -3, -5, 0, -4, -5, 0, 3).
7. Скласти схему алгоритму і програму для заміни в даному масиві А усіх нульових елементів середнім квадратичним значенням усіх від¢ємних елементів масиву. Результат вивести до друку. Середнє квадратичне n чисел — це Масив А задати самостійно, прийнявши n=20.
8. Скласти алгоритм і програму для перестановки елементів в заданому масиві Р(10) так, щоб на початку стояли елементи заданого масиву із парними індексами. Результати вивести до друку. Р = (2.12; 2.14; 3.07; 4.64; 9.11; 2.01; 1.20; 1.25; 1.11; 1.17).
9. Скласти алгоритм і програму розв`язання наступної задачі. В кожному із заданих масивів В(8) і С(8) знайти найбільше і найменше значення. Вивести до друку отриманні значення і їх номери в масивах. В=(1, 3, 5, 8, 6, 7, 2, 9); С=(-2.1; 1.7; 3.8; -4.0; 7.6; 5.2; 9.0; 0.6)
10. Скласти алгоритм і програму розв`язання задачі. На площині розміщені точки на відстанні С1, С2,…,С15 від центра кругового кільця з внутрішнім радіусом R1=0.5 і зовнішнім R2=2.75. Визначити кількість точок, що розміщенні всередині кільця, і середнє арифметичне їх відстані від центра. Результати вивести до друку. Елементи масиву С(15) задати самостійно.
11. Скласти алгоритм і програму для утворення масиву з двох заданих масивів А(10) і В(10) так, щоб елементи масиву А стояли на парних місцях, а елементи масиву В — на непарних нового масиву. До друку вивести всі три масиви. А =(3, 7, 8, 9, 0, -1, -2, 4, 5, 6); В = (0, 8, -3, 7, 0, 4, 2, 9, -4, -6). 12. Скласти алгоритм і програму розв`язання наступної задачі. В заданому масиві А(17) замінити всі нульові елементи числами, які розраховуються по формулі: , де К - порядковий номер нульового елемента масиву. Результат вивести до друку. А=(6, 8, 0, 4, 1, -3, 0, 2, -7, -1, 0, 5, 4, 8, 0, -8, 3).
13. В даному масиві М(14) замінити всі від¢ємні елементи, що стоять на парних місцях, його максимальним елементом, а на непарних – його мінімальним елементом. Початковий і перетворений масиви вивести до друку. М(1.2; 1.3; -0.2; 2.0; 4.8; -0.6; -1.1; 7.2; 3.5; -0.4; -1.7; 3.1; 2.8).
14. Непарні елементи заданого масиву В(N) розділити на середнє квадратичне елементів цього масиву, а парні елементи розділити на середнє геометричне значення. Отриманий масив вивести до друку разом з середніми значеннями (геометричним и квадратичним). Елементи масиву В задати самостійно, прийнявши n=12. Середнє квадратичне: Середнє геометричне:.
15. В заданому масиві С(N) замінити всі від¢ємні елементи, що стоять на парних місцях, середнім квадратичним значенням, всіх від¢ємних елементів; а ті, що стоять на непарних місцях - середнім геометричним значенням, усіх додатних елементів масиву. Перетворений масив вивести до друку. C= (0.1; -0.2; 0.3; 0.4; -0.5; 0.6; -0.7; -0.8; 0.9; 1.0; 1.1).
16. Скласти алгоритм і програму для заміни в даному масиві Р(N) всіх нульових елементів, що стоять на непарних місцях, — середнім квадратичним значенням, яке знаходять з усіх від¢ємних елементів масиву, а ті, що стоять на парних місцях середнім геометричним значенням, яке знаходять з усіх додатних елементів масиву. Перетворений масив вивести до друку. P = (9, 8, 0, 7, 6, 0, 5, 4, 0, 3, 2, 0, 2, 3, 0).
17. Дано масив Z(15). Сформувати масив Y наступним чином. Якщо додатних елементів в масиві Z більше, ніж від¢ємних, то замінити в ньому від’ємні елементи нулями. Інакше замінити додатні елементи максимальним елементом масиву Z(15). Елементи масиву Z задати самостійно. Початковий і сформований масив видати до друку.
18. Дано масив V(12). Якщо додатних елементів в ньому менше ніж від¢ємних, то замінити в ньому від¢ємні елементи нулями. В протилежному випадку кожен від¢ємний елемент замінити добутком тих елементів масиву V, які більше половини максимального елемента. Початковий і сформований масиви видати до друку. Масив V задати самостійно.
19. Дано масив V(14), елементи якого відмінні від нуля і в якому кількість додатних елементів дорівнює кількості від’ємних. Сформувати масив В з додатних елементів і масив С з від¢ємних елементів масиву А, зберігаючи їх послідовність. Сформувати масив D, елементи якого представляють собою добуток елементів масиву В на максимальний елемент масиву В, і масив Р, елементи якого представляють собою добуток елементів масиву С на мінімальний елемент масиву С. Масив А задати довільно. Початкові і сформовані масиви видати на друк.
20. Скласти алгоритм і програму для заміни в даному масиві Р(18) усіх нульових елементів середнім геометричним, яке знаходять з усіх додатних елементів масиву. Початковий і перетворений масив вивести до друку. Середнє геометричне n чисел - це .
P = (5, 8, 9, 11, 0, -3, -4, -2, 0, 6, 21, 13, -8, 5, -19, 0, -3, 7)
21. Скласти схему алгоритму і програму для знаходження найбільшого з від¢ємних чисел заданого масиву А(15). До друку вивести початковий масив, знайдене число і його номер. А=(2, 3, -8, 4, 0,- 3, 1, 6, 7, -6, -2, 0, 5, 4, 3).
22. Скласти алгоритм і програму для обчислення середнього арифметичного значення елементів заданого масиву А(15), що задовольняють умові А(I)>=B. Дані задати довільно, результати вивести до друку.
23. В даному масиві Н(10) обчислити:
Знайти найбільший елемент масиву D і найменший елемент масиву Е. Результати вивести до друку.
24. Дано масив С(12). Скласти алгоритм і програму перестановки елементів в заданому масиві таким чином, щоб на початку стояли від¢ємні елементи, потім нульові, а потім додатні. Початковий і сформований масиви вивести до друку. С = (1,5,0,-4,-2,0,6,8,0,-3,-9).
25. Скласти алгоритм і програму перестановки елементів в заданому масиві А(14) так, щоб на початку стояли елементи з парними індексами, а потім з непарними. Знайти суму елементів з парними індексами, і добуток елементів з непарними індексами. Результати вивести до друку. А = (0.2; 0.3; 0.4; -0.2; -0.3; -0.4; 0; -3.1; 3.5; -4.9; 0; 2.8; 3.1; 1.1).
|