Завдання на самоконтроль

1. Задано два масиви цілих чисел , і , . Розробити програму, яка будує симетричну різницю і впорядковує її елементи за зростанням. Різниця це елементи масиву , що не містяться в масиві і взяті по одному разу, аналогічно визначається . Для впорядкування використати метод вибору.

2. Задані цілі і масив . Розробити програму, яка впорядковує масив за неспаданням елементів, вилучає з упорядкованого масиву елемент (якщо такий є) і вставляє елемент так, щоб залишився упорядкованим. Пошук елемента у масиві здійснити методом поділу масиву навпіл.

3.Задано масиви цілих чисел , і , . Розробити програму, яка будує об’єднання і впорядковує його елементи за зростанням. Об’єднання – це множина елементів масиву і , взятих по одному разу. Для впорядкування використати метод вставки.

4. Таблиця виграшів грошової лотереї задана масивом виграшних номерів і масивом виграшів в гривнях , ( - виграш, який випав на номер). Розробити програму, яка обчислює сумарний виграш, який випав на білети з номерами , . (Для пошуку виграшів застосувати алгоритм поділу масиву навпіл).

5.Задано два упорядкованих за неспаданням елементів масиви цілих чисел , і , . Розробити програму, яка зливає ці масиви в один упорядкований за незростанням масив .

6. Задано масиви цілих: упорядкований за незростанням чисел , неупорядкований – , , . Розробити програму, яка елементи масиву вставляє в масив так, щоб залишився впорядкованим. Для впорядкування використати метод вставки.

7. Задано два масиви цілих чисел , і , . Розробити програму, яка будує впорядкований за неспаданням елементів масив з тих елементів масиву , які не є елементами масиву . Для впорядкування використати метод обміну.

8. Задано два масиви дійсних чисел , і , . Розробити програму, яка будує впорядковану за зростанням множину елементів , де – елементи перерізу . (Переріз – це множина елементів , які містяться в і взяті по одному разу). Для впорядкування використати метод вибору.

9. Задано два масиви дійсних чисел і , , . Розробити програму, яка будує впорядковану за зростанням множину елементів , де – елементи об’єднання . (Об’єднання – це множина елементів і , взятих по одному разу). Для впорядкування використати метод вставки.

10. Задано масив цілих чисел , . Розробити програму, яка знаходить в цьому масиві найдовший ланцюжок чисел, упорядкованих за зростанням.

11. Задано масив цілих чисел , . Розробити програму, яка перетворює цей масив так, щоб у кожній десятці спочатку розміщувалися від’ємні числа, а потім невід’ємні, які є в цій десятці, із збереженням порядку їх наступності.

12. Задано масив цілих чисел , . Розробити програму, яка перетворює цей масив так, щоб у кожній двадцятці спочатку розміщувалися числа, які діляться на 3, потім числа, які діляться на 3 з остачею 1 і наостанку числа, які діляться на 3 з остачею 2.

13. Задано масив цілих чисел , . Розробити програму, яка створює масив , елементами якого є всі непарні числа із масиву , упорядковані за незростанням. Для впорядкування використати метод обміну.

14. Задано масив цілих чисел , . Розробити програму, яка створює масив , елементами якого є числа із масиву , впорядковані за спаданням, тобто всі повторення чисел вилучені. Для впорядкування використати метод вставки.

15. Задано впорядковані за неспаданням дійсні числа , і невпорядковані , . Розробити програму, яка визначає цілі числа , де – номери тих , після яких можна вставити не порушуючи впорядкованості одержуваного масиву.

Тема 6. Алгоритми обробки багатовимірних масивів

До традиційних багатовимірних масивів належать таблиці і матриці.

Описати багатовимірний масив у програмі, як і одновимірний, можна за допомогою ідентифікатора типу, визначеного в розділі Type, або безпосередньо у розділі Var.

Наприклад,

 

Type Tvec= array[1..20] of integer;

Tmatr= array[1..10,1..10] of integer;

Var a, b: array[1..10,1..30] of real;

c: Tmatr;

d: array[1..5] of Tvec;

c, d: Tm;

x: array[1..10, 1..10] of integer;

 

тут матриці a, b описані безпосередньо у розділі Var і мають по 10 рядків і 30 стовпчиків. Матриця c описана за допомогою ідентифікатора типу Tmatr і має 10 рядків і 10 стовпчиків. Матриця d описана специфічно за допомогою ідентифікатора типу Tvec і має 5 рядків по 10 елементів у кожному.

Для звернення до елемента матриці використовується ім’я та два індекси у квадратних дужках наприклад, a[3,4] або a[3][4]. Ці форми ідентичні, але частіше використовується a[3,4].

Форма опису матриці d дозволяє звернення з одним індексом d[4], тобто це звернення до всіх елементів 4 рядка. Така форма опису є зручною при маніпулюванні рядками (перестановка рядків, вилучення рядків та інше), також при зверненні до підпрограм.

Для введення та виведення елементів таблиць і матриць зручно використовувати компонент StringGrid з такими основним функціями:

· Cels(ACol,ARow:integer):string – вміст комірки з координатами ACol, ARow;

· Cols(Index:integer): Tstrings – вміст колонки Index;

· Rows(Index:integer): Tstrings – вміст рядка Index;

та властивостями:

· Name: string – ім’я компонента;

· Col: longint – номер поточного стовпця;

· Row: longint – номер поточного рядка;

· ColCount: longint – кількість стовпців;

· RowCount: longint – кількість рядків;

· FixedCols: longint – кількість стовпців фіксованої зони;

· FixedRows: longint – кількість рядків фіксованої зони;

· DefaultColWidth – ширина колонки;

· DefaultRowHeight – висота рядка;

· ScrollBars – лінії прокрутки;

· Font – тип і розміри шрифту;

· Options.goEditing: Boolean – дозвіл на редагування;

· Options.goTabs: Boolean – переміщення курсору клавішею Tab.

Ці властивості можна встановлювати як в Інспекторі об’єктів так і програмно.

До обчислювальних алгоритмів обробки багатовимірних масивів належать: алгоритми пошуку максимальних і мінімальних елементів та індексів їх розміщення у масиві; обчислення сум і добутків рядків і стовпчиків матриць; перестановки місцями рядків і стовпчиків матриць; вилучення рядків і стовпчиків матриць; обчислення суми, різниці та добутку матриць; транспонування матриць та інші.